首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组形参不是退化作指针了吗?

2012-07-29 
数组形参不是退化为指针了吗??#include stdio.h23 intBubble(int n[])4 int main()5 {6int i7int cArr

数组形参不是退化为指针了吗??
#include <stdio.h>
  2 
  3 int Bubble(int n[]);

  4 int main()
  5 {
  6 int i;
  7 int cArry[5] = {2,8,7,4,1};
  8 Bubble(cArry);
  9 for(i=0; i<5; ++i)
 10 {
 11 printf("%d ",cArry[i]);
 12 }
 13 return 0;
 14 }
 15 
 16 int Bubble(int n[])
 17 {
 18 int i;
 19 int j;
 20 int k;
 21 int nTemp;
 22 printf("cArry is:%d\n",sizeof(n)); //为什么是8??不是退化为指针了吗?? 23 for(i=0; i<5; ++i)
 24 {
 25 for(j = i+1; j<5; ++j)
 26 {
 27 if(n[i]>n[j])
 28 {
 29 nTemp = n[i];
 30 n[i] = n[j];
 31 n[j] = nTemp;
 32 }
 33 }
 34 }
 35 
 36 for(k=0; k<5; ++k)
 37 {
 38 printf("%d\n",n[k]);
 39 }
 40 return 0;
 41 }


在VS2005中确实是4,退化为指针了。但是Linux下面gdb调试时候为啥是8呢??搞不懂、请教

[解决办法]

探讨
#include <stdio.h>

3 int Bubble(int n[]);

4 int main()
5 {
6 int i;
7 int cArry[5] = {2,8,7,4,1};
8 Bubble(cArry);
9 for(i=0; i<5; ++i)
 10 {
 11 printf("%d ",cArry[i]);……

[解决办法]
楼主的机器是64位的吧??一个指针就变成了8字节的
[解决办法]
如果是64位机器的话是正常的,如果是32位的话就有问题了。

热点排行