C和指针 第八章 数组 问题一
来源:互联网 发布:怎样开个淘宝店铺 编辑:程序博客网 时间:2024/05/16 14:24
C和指针 第八章 数组 问题一
定义 int a[20];
int *ip = a + 3;
假定a数组在内存的起始位置是100.请问表达式a, &a,&a[4],&a+4和ip,&ip,&ip[4],&ip+4的值为多少?
很容易知道,a = 100; &a = 100; &a[4] = 116 . ip = 112; &ip值未知(假定某次为8000); &ip[4] = 128 .
那么,&a+4和&ip+4,到底为多少?
书上的答案,说&a+4 = 116. 我对此很疑惑,于是用VC,DEV-C++和GCC跑了一下,发现答案不是116.而应该是420.
而&ip + 4 = 8016.
分析原因,我猜测&a+4 =420的理由是: &a = 100,+4最终加的是:4* sizeof(a[20]) = 4 * 80 = 320。
而ip的定义就是指向整型的指针,所以&ip+4中的+4为: 4* sizeof(int*) = 16.
不知道其他编译器的结果如何。
之后我在stackoverflow上问了这个问题,给出一个我觉得不错的答案:
&a
is a pointer to an array of int with 20 elements (the type is int (*)[20]
).
So &a + 4
is different than a + 4
since in the second expression a
evaluates to a pointer to the first element (it evaluates to a pointer of type int*
). The pointer arithmetic works out differently since the pointer types are different, even though the value of &a
and a
are the same.
- C和指针 第八章 数组 问题一
- 【C和指针】第八章(1)-->一维数组
- 第八章 数组 [C和指针]
- 《C和指针》第八章 数组
- 记录-C和指针第八章-数组
- 【笔记】C与指针 第八章 数组
- 【C】【笔记】《C和指针》 第六章 指针 第七章 函数 第八章 数组 第九章 字符串、字符和字节
- C和指针读书笔记(第八章)
- C和指针第八章笔记
- C与指针第八章数组编程练习第四题
- 【C Primer Plus】第十章 数组和指针(一)
- C语言中的数组和指针一章
- C 指针和一维数组
- C语言 指针和一维数组
- C语言--指针和一维数组
- C数组和指针相关的问题
- C语言第八章:指针
- C和指针复习系列二:第八章~第十五章
- 编程一年有感
- HDU 1559 最大子矩阵
- 关于ios应用本地化
- 【菜鸟收藏:熟知什么是四声道环绕】jiasuba.com
- 关于在结构体末尾定义空数组的用法
- C和指针 第八章 数组 问题一
- php gd2
- SQL server 与 java对应字段
- 适配器
- 嵌入式系统的知识体系、学习误区及学习建议
- datatable 分组 linq
- ios 有关文件读写的一些相关事项
- 聊天记录解密
- 工具函数文字描边,CCSprite 描边。