首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果arr是整型数组,则arr和&arr之间的差异

如果arr是整型数组,则arr和&arr之间的差异
EN

Stack Overflow用户
提问于 2021-09-03 11:14:37
回答 2查看 102关注 0票数 0

我刚刚开始使用C++,我有一个问题。如果arr是一个数组或10个整数,则arr是指向数组中第一个元素的指针。但是&arr是什么意思呢?那么指向数组的指针和指向数组的引用有什么区别呢?

EN

回答 2

Stack Overflow用户

发布于 2021-09-03 11:59:12

是指向数组中第一个元素的指针

否!

在C++中,数组和指针是两种不同的类型,它们之间有足够的相似性,如果不能正确理解它们会造成混淆。指针对于初学者来说是最难掌握的概念之一,这一事实也无济于事。

所以我觉得有必要上一堂速成班。

速成班

数组,简单

代码语言:javascript
复制
int a[3] = {2, 3, 4};

这将创建一个名为a的数组,其中包含3个元素。

数组定义了数组下标运算符:

代码语言:javascript
复制
a[i]

计算结果为数组的第i个元素。

指针,简单

代码语言:javascript
复制
int val = 24;
int* p = &val;

p是指向对象val的地址的指针。

指针定义了间接(取消引用)运算符:

代码语言:javascript
复制
*p

计算结果为p指向的对象的值。

指针,类似于数组

指针提供对象在内存中的地址。它可以是上例中的“独立对象”,也可以是数组的一部分。指针类型和指针值都不能告诉你它是哪一个。只有程序员。怪不得

指针还定义了数组下标运算符:

代码语言:javascript
复制
p[i]

计算结果为p指向的对象“右侧”的第th元素的i。这假设p的对象指针是数组的一部分(除了在p[0]中,它不需要是数组的一部分)。

请注意,p[0]等同于(与) *p完全相同。

数组,就像指针一样

在大多数上下文中,数组名称会衰减为指向数组中第一个元素的指针。这就是为什么许多初学者认为数组和指针是一回事。事实上,他们不是。它们是不同的类型。

回到你的问题

&arr是什么意思?

如上所述,arr不是一个指针。所以&arr表示指向数组的指针。这与指向数组第一个元素的指针(&arr[0])不同。

那么指向数组的指针和指向数组的引用有什么区别呢?

那么,首先请阅读What are the differences between a pointer variable and a reference variable in C++?。其次..。好了,差不多就是这样。

此答案的大部分内容都是从复制的

票数 2
EN

Stack Overflow用户

发布于 2021-09-03 11:45:20

你需要考虑三个不同的概念:

  • Pointer:指针是用于存储另一个数组的地址的变量数组是类似数据类型
  • 引用的变量的集合:引用<>E211变量是别名,即现有变量的另一个名称。

以下是如何将这三个变量连接在一起的摘要:

代码语言:javascript
复制
arr == &arr[0]

代码语言:javascript
复制
*arr == arr[0] 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69044024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档