读书人

数组长度,该如何处理

发布时间: 2012-07-28 12:25:13 作者: rapoo

数组长度

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));} 

读书人网 >C语言

热点推荐