ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

关于C++中的数组名

2022-04-26 01:01:51  阅读:122  来源: 互联网

标签:const int C++ 数组名 关于 数组 指针


关于C++中的数组名是似乎一直没搞懂、但也没花时间研究的问题,今天被同学问道(虽然不是直接遇到),又想起了这个悬而未决的疙瘩,于是决定花时间复习下

数组名和指针的关系

在我学习C++的教材(谭浩强)中我一直记得是“数组名就是指针”
但后面的实践中我发现可能不是这么简单
比如:定义一个静态数组,但后sizeof()

int a[10];
cout << sizeof(a) << endl;
// 输出是40,即int的大小4*数组长度10
int* b = a;
cout << sizeof(b) << endl;
//输出是8,一个指针变量的大小

如果数组名只是一个单纯的指针的话,难道不是应该输出8?一个指针变量的大小
这个问题衍生出了数组作为参数传参的问题
于是我决定翻开我珍藏许久(没翻过)的《C++ Primer》打算重新学习一下

狡辩:我觉得这书可能更适合当工具书

然而,数组还有一个特性,在很多用到数组名字的地方,编译器都会自动将其替换为一个指向数组首元素的指针
数组名不是简单的指针,而且数组名不可修改(指针常量)

数组传参的问题

void test(const int* a);
void test(const int a[]);
void test(const int a[10]);
// 不管传哪个都会被看作是一个指针常量

标签:const,int,C++,数组名,关于,数组,指针
来源: https://www.cnblogs.com/yaocy/p/16192693.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有