网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【C语言进阶】数组名和指针使用sizeof有什么不同

时间:2022-10-03 17:53

人气:

作者:admin

标签: 编程  C语言  Si  指针  数组 

导读:本文介绍一个比较常见的错误,是跟sizeof有关的,不知你是否有掌握呢?...

C语言进阶】数组名和指针使用sizeof有什么不同?

本文介绍一个比较常见的错误,是跟sizeof有关的,不知你是否有掌握呢?

1 问题说明

大家都知道在C语言中,我们会使用sizeof来求一个变量的实际内存长度,那么如果是对数组名求sizeof,以及对一个指针求sizeof,它的结果有何不一样呢?

2 示例代码

为此,简单写了一段测试代码:

#include int main(int argc, const char *argv[])
{
int a[10];
int *p = &a;
​
printf("sizeof(a) = %d\\n", sizeof(a));
​
printf("sizeof(p) = %d\\n", sizeof(p));

return 0;
}

3 代码解读

代码其实很简单,先是定义了一个10个元素的整型数组,然后定义了一个指向整型类型的指针,并将指针指向数组a。

随后对a和p,分别使用sizeof来求大小。

我们来看一下运行结果:

image-20220930212558866

从运行结果,我们可以知道,两者是完全不一样的。

sizeof(a),是求a数组的内存大小,理论上应该等于:10 乘以 一个整形数所占空间 = 40 字节;

而如果对指针p求sizeof,它用于等于运行机器上的指针大小,比如在32位机器上,这个值就是4字节;而我的测试机器是64位机器,所以其值为8字节。

4 总结

sizeof求数组和指针是两个不同的操作,对数组它是求数组的整体内存大小,而对指针,其值用于等于机器的字长(即不同的机器有不同的测试结果)。

这个易犯错的知识点,你get到了吗?

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信