在Win 32 中:
1. (1) 对数组名进行sizeof运算时,结果是整个数组占用空间的大小;(2) 但是数组作为函数参数时,对数组名进sizeof 运算,结果为 4;
(2) 对指针进行sizeof运算得到的值是编译器分配给指针(也就是一个地址)的内存空间,即为4。
2. (1) 对数组名作&运算,得到的还是数组第一个元素的地址;
(2) 对指针取地址时得到的结果是指针所在的地址,也就是指向这个指针的指针,与指针的值不同。
#include <iostream>
using namespace std;
bool mytest(int 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;
}
int main()
{
int A[100];
mytest(A);
return 0;
}