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
以下是一段示例代码:
#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
相关文章推荐
- C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
- sizeof()计算数组结构体类大小长度
- C++中用sizeof()计算数组长度问题
- C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
- C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
- sizeof运算符计算数组长度
- 计算字符串的长度及sizeof与strlen、gets与scanf、字符数组与字符串
- 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题
- sizeof 计算出数组的长度
- 计算数组长度
- 【分享(笔试常考易错)】sizeof求数组长度的剖析心得
- 数组长度计算
- 我的编程学习日志(10)--求字符数组与数字数组的长度(strlen,,size,sizeof)
- C/C++ 数组参数传递后,还能计算长度吗?
- sizeof()与 数组长度获取
- 计算任意类型数组长度的——宏
- 计算两个长度未知的字符串数组的和
- 一维数组赋初值及长度计算
- strlen和sizeof求字符数组长度
- 计算数字长度(使用sizeof)