如何从指针访问数组

How to access the array from the pointer?

本文关键字:访问 数组 指针      更新时间:2023-10-16

我试图了解指针的工作原理,但我不知道如何使用仅指向第一个元素的指针来访问所有数组

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 循环。