c\c++ 指针,地址小理解 (一)
来源:互联网 发布:阿里php招聘 编辑:程序博客网 时间:2024/06/07 06:36
在csdn论坛上经常会遇到被人提出关于指针,数据地址的一些理解,再此从其中找到一些颇有意思的小问题与大家分享学习一下:
void main(void){ int a[] = {1,2,3,4,5}; int *p = (int *)(&a +1); printf("%d %d\n",*(a+1),*(p-1));}
解析如下:
首先数组a类型为int ,一直int类型在数组中占4字节。
第一个输出 2很好理解,*(a+1)相当于a[0+1],a是数组名称,指向a数组的第一个地址,也就是a[0].因为a是int类型,*(a+1)相当与a[0]的地址往后偏移4个字节,由此可以知道
*(a+1)指向的就是a[1],所以第一个结果就是2.
第二个输出5,解释如下:int类型指针p,int *p=(int *)(&a+1)指向的是数组a偏移一个(int类型)4个字节的地方,
输出*(p-1)的地址的数据,将p在向前偏移一个int(4字节)的位置,这时候就不是直接指向a[0]了,而是指向了a[4],
因此可以得知输出为5
图解如下:
阅读全文
0 0
- c\c++ 指针,地址小理解 (一)
- 理解C指针:(一)指针初探
- 理解C语言中的指针(一)
- 深入理解C语言指针(一)
- C语言指针理解(一)
- C语言(彻底理解指针和地址,彻底!)
- C 语言指针与汇编地址(一)
- 边玩崩程序边理解C++(一) 类和指针
- 【C语言学习】指针再理解(一)
- 深入理解C指针学习笔记(一)
- c语言之指针理解一
- c语言之指针数组理解一
- c语言之多级指针理解一
- C语言的那些小秘密之指针(一)
- C语言的那些小秘密之【指针(一)】
- 【C】 指针与地址
- 理解C指针: 一个内存地址对应着一个值
- 理解C指针: 一个内存地址对应着一个值
- 关于SSH整合的那些事
- 按位操作的应用
- 总结-2017/11/24
- 近期 wnTKYg Linux 恶意软件简介
- 解析xml的4种方法详解
- c\c++ 指针,地址小理解 (一)
- 比起商汤IPO,我们更关心那1亿美金和C轮融资的背后大料
- AI一分钟 | 美媒称中国导弹阵地遭美国AI技术"快速识别",人工智能主播将亮相BBC节目
- 送书 | 你一定能看懂的算法基础书(代码示例基于Python)
- maven 报错invalid LOC header(bad signature)
- 工作学习日(第一周)[2day]---很牛的canvas
- 欧式距离计算
- 我亲手调教的AI,竟然开始歧视我了!
- 小白笔记---------------------------------leetcode(70. Climbing Stairs )