数组名和指针的区别(小结)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Win 32 中:

1. (1) 对数组名进行sizeof运算时,结果是整个数组占用空间的大小;

(2) 但是数组作为函数参数时,对数组名进sizeof 运算,结果为4;

(2) 对指针进行sizeof运算得到的值是编译器分配给指针(也就是一个地址)的内存空间,即为4。

2. (1) 对数组名作&运算,得到的还是数组第一个元素的地址;

(2) 对指针取地址时得到的结果是指针所在的地址,也就是指向这个指针的指针,与指针的值不同。

BOOL mytest(char param[100])

{

//参数数组名:paramBytes

int paramBytes = sizeof(param);

printf("paramBytes \t%d\n",paramBytes);

//数组:mych1[]

char mych1[] = "abcdefg123"; //若定义为mych1[100]

int mych1Bytes = sizeof(mych1);

printf("mych1Bytes \t%d\n",mych1Bytes);//输出:100

//数组:mych[200]

char mych[200] = {0};

int myBytes = sizeof(mych);

printf("myBytes \t%d\n",myBytes);

printf("---addr \t%d\n",mych);

printf("---addr \t%d\n",&mych);

//指针:pch

char* pch = "12345abc";

int pchBytes = sizeof(pch);

printf("pchBytes \t%d\n",pchBytes);

//pch = mych;

printf("---addr \t%d\n",pch);

printf("---addr \t%d\n",&pch);

return TRUE;

}

运行:

相关文档
最新文档