sizeof 计算出数组的长度

通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值