如何从指针访问数组
How to access the array from the pointer?
我试图了解指针的工作原理,但我不知道如何使用仅指向第一个元素的指针来访问所有数组
int myArray[10];
for(int i=0; i<10; i++)
{
myArray[i] = 11*i;
}
int *p;
p = myArray;
//Now how do I access the complete array using the variable p
cout<<*p; //This only prints the first value, how to print all the values
您必须使用 while 或 for。
int i = 0;
while (i < 10)
{
cout << p[i];
i += 1;
}
指针和数组的工作方式相同。数组只不过是指向您分配的第一个元素的指针。
例如,如果您想访问pos 5,您只需编写:
...
int *p;
p = myArray;
cout << p[5];
由于编译器知道 p 是指向 int 的指针,因此它将为每个步骤添加 int 的大小(在本例中为 4 个字节(。只要不使用指针来取消,编译器就会为你执行此操作。您仍然必须跟踪数组的长度,以免超过它,因为指针不会这样做。
除了thr声明,数组和指针使用相同的语法使用(它们在记忆中是不同的,这意味着它们仍然需要区别对待(
像这样使用,
int *p;
p = myArray;
for(int i=0;i<10;i++)
{
cout<<*(p+i);
}
第一个元素指向数组中元素的第一个内存位置。所以这个:
myArray[0];
和
myArray;
指向同一位置。您可以在指针上使用索引,就像填充数组一样。所以这个:
int *p = myArray;
cout << p[0];
cout << p[1];
将访问您的其他元素。您可以使用 for
循环来访问数组中的所有元素,就像您最初填充数组一样。
您可以将数组的名称视为指向其第一个元素的指针。因此,p = myArray;
行只是将数组的第一个元素的地址复制到myArray
p
中。
现在cout<<*p;
行显然显示了 p
所指向的值,这是数组的第一个元素。
要显示所有元素,您可以像以前一样简单地使用 for
循环。
相关文章:
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 使用指针访问数组中的对象数据成员
- VTK 图像数据,访问数组中的 1 个图像
- 调用函数后无法访问数组
- 如何从地图访问数组的元素?
- 访问数组中的不同元素
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++基于1而不是0的访问数组,方法是在编译时移位
- 如何在主函数之外访问数组?
- 如何在 llvm 的 cpp api 中使用 CreateInBoundsGEP 来访问数组的元素?
- 访问数组中所有结构的成员
- C 是否每次访问数组时都复制元素?
- C++ 为什么访问数组中的元素会返回指针?
- 如何通过指针访问数组的元素
- 指针数组交换无需直接访问数组
- 直接从指针/地址访问数组的元素
- 我有一个 Qt 对象的 2d 数组,我已经用值播种了这些对象。如何访问数组中特定对象的值并更改它们?
- 如何使用 C+ 中的指针访问数组中的特定索引
- 通过两个下标访问数组成员