C语言一维数组名的“坑点”

学习知识,最怕的是冲突性,比如在学习指针之前:

1int a;
2printf("%d",sizeof(a));

输出的是整型变量 a 所占的内存空间。

学习指针后:

1int *p;
2printf("%d",sizeof(p));

输出的是一个指针变量或者一个指针数据所占的内存空间。

学习数组后:

1int a[10];
2printf("%d",sizeof(a));

输出的是一维数组 a 占据的 10 个整型数据的所有空间,单位是字节。

然而,初学者在学习时,教科书一直强调,数组名a是一个常数,代表的是数组的首地址。

你是不是很疑惑,地址数据所占的空间是类型无关的,程序编译成32位代码,就应该占32位,4字节;程序编译成64位代码,就应该占64位,8字节?这是怎么啦?

我认为,这就是1970年,C语言发明时,两个创始人留下的坑,三个臭皮匠才顶一个诸葛亮,他们两个,智慧还是不够(开个玩笑)。

纵然C语言不完美,但不影响其伟大。共性的地方就用类比方法记忆;特性的地方就重点记忆啦,别无他法。

C语言中的坑还很多,以后慢慢道来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值