数组长度
- C/C++ code
#include<stdio.h>void sizeN(char *dst);int main(void){ char dst[8]; printf("%d\n",sizeof(dst)/sizeof(char));//这里输出是8..这个我知道 sizeN(dst); return 0;}void sizeN(char *dst){ printf("%d\n",sizeof(dst)/sizeof(char));//不明白的是这里为啥变成4了....}就像注释里面说的,不明白为什么下面的那个输出变成4了。。有什么不一样的么?
[解决办法]
void sizeN(char *dst){
printf("%d\n",sizeof(dst)/sizeof(char));//不明白的是这里为啥变成4了....
}
这里的dst是指针,指针好像正好4个字节
所以sizeof(dst) 应该是4
然后sizeof(char)是1
所以4/1 = 4
我也是新手。。。。如有问题,请指教
[解决办法]
- C/C++ code
void sizeN(char dst[])void sizeN(char *dst)// 上面两种写法是一样的,在调用的时候数组会自动退化为指针的。
[解决办法]
因为数组名作为函数的参数时已经退化为一个指针,所以size(dst) = 4;sizeof(char) = 1;
[解决办法]
这里的
- C/C++ code
void sizeN(char *dst){ printf("%d\n",sizeof(dst)/sizeof(char));}