我刚刚开始使用C++,我有一个问题。如果arr是一个数组或10个整数,则arr是指向数组中第一个元素的指针。但是&arr是什么意思呢?那么指向数组的指针和指向数组的引用有什么区别呢?
发布于 2021-09-03 11:59:12
则
是指向数组中第一个元素的指针
否!
在C++中,数组和指针是两种不同的类型,它们之间有足够的相似性,如果不能正确理解它们会造成混淆。指针对于初学者来说是最难掌握的概念之一,这一事实也无济于事。
所以我觉得有必要上一堂速成班。
速成班
数组,简单
int a[3] = {2, 3, 4};这将创建一个名为a的数组,其中包含3个元素。
数组定义了数组下标运算符:
a[i]计算结果为数组的第i个元素。
指针,简单
int val = 24;
int* p = &val;p是指向对象val的地址的指针。
指针定义了间接(取消引用)运算符:
*p计算结果为p指向的对象的值。
指针,类似于数组
指针提供对象在内存中的地址。它可以是上例中的“独立对象”,也可以是数组的一部分。指针类型和指针值都不能告诉你它是哪一个。只有程序员。怪不得
指针还定义了数组下标运算符:
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++?。其次..。好了,差不多就是这样。
此答案的大部分内容都是从复制的
发布于 2021-09-03 11:45:20
你需要考虑三个不同的概念:
以下是如何将这三个变量连接在一起的摘要:
arr == &arr[0]和
*arr == arr[0] https://stackoverflow.com/questions/69044024
复制相似问题