设计工作室网站首页,稳定免费域名,外贸推广平台有哪几个,兰州建设C语言一个小小的问题引起的对指针的探究。。。 废话不多说。下面是这个大家认识的一个及其简单的程序#xff1a; 1 #include stdio.h2 void A(int a[])3 {4 printf(%d/t, sizeof(a));5 }6 int main()7 {8 int a[512];9 int *p;
10 … C语言一个小小的问题引起的对指针的探究。。。 废话不多说。下面是这个大家认识的一个及其简单的程序 1 #include stdio.h2 void A(int a[])3 {4 printf(%d/t, sizeof(a));5 }6 int main()7 {8 int a[512];9 int *p;
10 printf(%d/t, sizeof(a));
11 A(a);
12 printf(%d/n, sizeof(p));
13 return 0;
14 } 这个程序大家先看一遍再拿到编译器里运行调试发现什么了没输出的是512 42 42。 我今天下午查了些资料才知道了原来是自己基础没掌握好现在我就来解释下 第一个输出512是因为它是一个数组所以输出了整个数组所站的总共的内存字长大小。但为什么后面输出的是4呢原来啊编译器在对数组进行地址参数传递的时候复制了内存地址结果就使得数组直接变成指针了。。就是这个原因但为什么输出的是42呢呵呵这个就是指针的构成了其实所有的指针都只是一个无符号的整形数。。我的编译环境是32位的linux。处理器寻址能力为2^32-1相当于就是站了4个字节空间的大小。但在DOSTC环境下编译由于dos是16位的所以就只输出的2咯 posted on 2012-06-02 08:59 依旧涛 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/t-bruce-yu/archive/2012/06/02/2531544.html