首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组长度,该如何处理

2012-07-28 
数组长度C/C++ code#includestdio.hvoid sizeN(char *dst)int main(void){char dst[8]printf(%d\n,s

数组长度

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

热点排行