您的位置:首页 > 其它

sizeof 计算出数组的长度

2011-06-09 22:44 218 查看
通过sizeof可以计算出类型的长度,同样也可以计算出数组的长度,但是这具有一定的局限性。

以下是一段示例代码:

#include "stdio.h"

void Count_array_element_ptr(int *p){
printf("%d/n",sizeof(p)/sizeof(p[0]));
return ;
}

void Count_array_element_array(int array[]){
printf("%d/n",sizeof(array)/sizeof(array[0]));
return ;
}

int main(int argc, char* argv[])
{
printf("Hello World!/n");

int array[10];

//session 1: 计算出数组的长度
printf("%d/n",sizeof(array)/sizeof(array[0]));//使用这种表达方式,代替
//sizeof(array)/sizeof(int) 是有好处的
//因为这样子就可以直接修改array的类型而不需修改下面的语句
//使用这种方法得以计算出数组的长度,但是在经过函数参数传递
//之后,则不然

//session 2: 通过函数计算出数组的长度
Count_array_element_ptr(array);//经过函数参数的传递之后,得到的结果是1,而无论使用的形参类型是int *
//还是int array[]

//session 3: 通过函数计算出数组的长度
Count_array_element_array(array);//得到的结果与session 2相似

//conclusion:计算出数组的长度可以使用 sizeof(array)/sizeof(array[0])
//这种形式,但是这仅局限于数组声明的函数内,如果经过了形参的传递之后,则会失效
//具体更深层次的原因这里就不详细的讨论

return 0;
}

运行结果:

10

1

1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session