数组易错点

1.输入字符串时,前面不需要加&,因为数组名本来就是地址

 

 2.比较字符串的时候不能直接这样比较:

if(password == "123456")
    printf("密码正确\n");

而是应该使用strcmp函数 ( 头文件为:#include<string.h> ) :

if( strcmp(password,"123456") == 0 )
    printf("密码正确\n");

3.数组传参:

#include<stdio.h>
void fun(a[])
{
	printf("%d\n",sizeof(a));
}
int main()
{
	int a[10] = { 0 };
	printf("%d\n",sizeof(a));
	printf("%d\n",sizeof(a[0]));
	fun(a);
	return 0;
}

结果为:

40
4
8

前两个都是正常算大小,应该问题不大,第三个为什么是8呢?

因为数组在传参的时候,本质并不是传整个数组,而是传首元素地址,所以实参实际上不是数组,而是指针,所以在x64环境下算出来的sizeof(a)大小就是8,而x84环境下算出来的大小应是4

并且:子函数在访问主函数的a数组时,arr[0]相当于*(arr + 0)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值