数组长度
#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了....}void sizeN(char dst[])void sizeN(char *dst)// 上面两种写法是一样的,在调用的时候数组会自动退化为指针的。
[解决办法]
因为数组名作为函数的参数时已经退化为一个指针,所以size(dst) = 4;sizeof(char) = 1;
[解决办法]
这里的
void sizeN(char *dst){ printf("%d\n",sizeof(dst)/sizeof(char));}