数组名作为函数参数传递时应该注意的问题

#include<stdio.h>
#include<string.h>

void output(char num1[ ])
{
printf("%d\n%d\n",sizeof(num1),strlen(num1));
}

int main()
{
char num[20];
printf("enter number:\n");
gets(num);
printf("%d\n%d\n",sizeof(num),strlen(num));
output(num);
return 0;

}

由于代码简单,所以直接全部给出,如果输入1234567;

可以看到,在主函数中的printf("%d\n%d\n",sizeof(num),strlen(num));输出是num数组的长度20和字符长度7;

但是在被调用的函数output中呢?看似好像还是一样,应该输出num数组的长度20和字符长度7,但是实际是4和7,这是为什么呢?

因为在数组名作为函数参数传递时,传递的实际上是指针,被调用函数接收到的实际参数的类型就是指针,不再具有数组的属性,因此output中的num1就是指针,不再是数组名,

sizeof(num1)就等于4,strlen(num1)仍然为7.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值