|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
关于S1E23课后习题的疑问点:
1.小甲鱼说int(*p)[10] 跨度是 sizeof(int) * 10;我不认同,因为数组指针本质也是指针啊,指针就应该占4字节(64位系统,8字节)——见下方截图1
2.小甲鱼说array 的跨度是 sizeof(array[0]) ;我也不认同,array既表示首元素地址,还表示整个数组,应该占sizeof(array[0])*10——见下方截图1。
既然array既表示首元素地址,也表示整个数组,那么,printf(“%d”,array),为何默认打印的是首元素地址,而不是整个数组?
我用代码验证了下我的想法,发现我好像是对的。 真是这样吗?
3.我百度了CSDN,贴子写64位系统地int占8个字节?? 我自己运行,是4个字节啊;怀疑人生。。。
- #include <stdio.h>
- int main()
- {
- int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int (*p)[10] = &array;
- printf("%d\n", sizeof(&array));
- printf("%d\n", sizeof(p));
- printf("%d\n", sizeof(array));
- printf("%d\n", sizeof(array[0]));
- return 0;
- }
复制代码
运行结果:
8
8 //我是64位系统
40 //array指整个数组,是sizeof(int)*10
4 //int型占4Bytes
|
|