c语言 amp a 1,c语言那些细节之a+1和a+1的区别
首先a是一个数组名,当看到这个a与&a时,一般我们的理解都是这个数组的首地址。没错,如果加上打印的话,确实两个值是一样的。
不过&a是整个数组的首地址,a则是数组首元素的地址,虽然值一样,但是意义却不相同。
在此之前有必要先看下c程序在内存中的分布图。
下面来看一个例子吧还是。
示例代码:
#include
int main(int argc, char *argv[])
{
int i;
int a[]={1, 2, 3, 4, 5};
int s;
int *p = (int *)(&a+1);
printf(" a = %p\n&a = %p\n", a, &a);
for(i = 0; i < 5; i++)
printf("a[%d] = %p\n", i, &a[i]);
printf(" p = %p\n&p = %p\n&s = %p\n", p, &p, &s);
return 0;
}
运行结果:
a = 0022FF40
&a = 0022FF40
a[0] = 0022FF40
a[1] = 0022FF44
a[2] = 0022FF48
a[3] = 0022FF4C
a[4] = 0022FF50
p = 0022FF54
&p = 0022FF38
&s = 0022FF3C
由上面的运行结果,我们可以知道a和&a的区别了。可得下图:
因为是运行在main函数体内的变量,所以这些都是在栈中运行的,所以p指针是指向了a[4]后的那个地址,而p本身的地址是在栈中分配的。
综上可知:
&a+i = a + i*sizeof(a);
a+i = a +i*sizeof(a[0]);
c语言 amp a 1,c语言那些细节之a+1和a+1的区别相关推荐
- 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节
C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...
- c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...
[摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...
- bool类型返回值_Python 到底是强类型语言,还是弱类型语言?
推荐三个网站 1.Python进阶知识: http://python.iswbm.com 2.Python魔法技巧: http://magic.iswbm.com 3.PyCharm 手册: htt ...
- 《C Primer Plus(第6版)中文版》一第1章 初识C语言1.1 C语言的起源
本节书摘来自异步社区<C Primer Plus(第6版)中文版>一书中的第1章,第1.1节,作者 傅道坤,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 ...
- 浅谈python语言_浅谈Python语言基础知识点!
一.Python 语言的简述 Python语言是一种解释型.面向对象的编程语言,是一种开源语言. Python属于动态类定义语言,也是一种强调类型语言. 二.Python 语言的特点 1.简单.高级 ...
- c语言 hello world代码_C语言基础
首先,还是从hello world开始. #include <stdio.h> int main(void) { printf("Hello Worldn"); ret ...
- Swift2.0语言教程之Swift2.0语言中的标准函数
Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...
- C语言实现易语言变量框,c语言实现简单的易语言
大家熟知的易语言底层其实就是c语言来实现的,c语言的32个关键字加上一些常用的其他,使用#define这种宏定义来实现简单的汉语替换 1.下面就先打开VisualStudio,在头文件目录下新建一个 ...
- 51 时间片系统 纯c语言,51单片C语言学习.doc
51单片C语言学习 51单片机C语言学习第三课 [ 作者:明浩????转贴自:电子制作实验室????点击数:1067????更新时间:2004-10-2????文章录入:admin ]减小字体 增大字 ...
- python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...
Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...
最新文章
- mysql 区分大小写(大小写敏感)配置
- 计算机操作系统32跟64区别是什么,32位和64位计算机操作系统之间的区别32位和64位win7系统之间的区别...
- 重庆职高统考c语言,2021年重庆市中职毕业生参加高职分类考试招生文化素质测试 考试说明...
- YunYang1994/tensorflow-yolov3 ValueError: cannot reshape array of size 43095 into shape (6) 解决办法
- Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
- 机器学习(九)——EM算法
- Handler的一个图片轮播程序
- Java中堆内存和栈内存详解(转)
- Let’s to be a bug-free programmer
- IDEA Maven Mybatis generator 自动生成代码
- matlab求取积分
- 云宏大讲坛 | 灵活轻便的云宏CNware虚拟防火墙
- 大学网课查题公众号 查题公众号搭建 对接题库
- 一、线性模型----Lasso、Ridge回归及正则化的初步理解
- java null转空_Java对象为空时,将null转换为 保存值为空的属性
- Python报错处理libpng warning: iCCP: cHRM chunk does not match sRGB
- C++函数的递归调用
- 太原理工大学计算机学院向洁,第二届中国大学生服装模特大赛决赛入围名单出炉...
- 用PHP来统计在线人数的四个方法详解
- 中国科学院大学-模式识别与机器学习-复习、往年真题整理(含解答)【硬干货,博主本课程90+】
热门文章
- 计算机考研英语词汇书,考研英语词汇参考书推荐
- 关于印象笔记“本笔记只能查看。它是从另一笔记创建的”
- Python模拟登录哔哩哔哩
- 进程间通信-Queue(python版)
- LeetCode 题 - 28. 实现strStr() python实现
- 大数据每周分享第 008 期
- 100万愤怒的小鸟:中国手机开发者生存调查
- 查看mysql是否启用安全审计_如何查看oracle是否开启了审计功能?
- 利用Python进行「基金投资组合优化」(一)
- 【Tensorflow】深度学习实战01——Tensorflow实现简单的卷积网络(MNIST)