我试图了解指针是如何工作的但我不知道如何只使用指向第一个元素的指针来访问所有数组
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
答案 0 :(得分:3)
你必须使用while或for。
int i = 0;
while (i < 10)
{
cout << p[i];
i += 1;
}
指针和数组的工作方式相同。数组只不过是指向您分配的第一个元素的指针。
答案 1 :(得分:2)
除了声明,数组和指针可以使用相同的语法 (它们在记忆中是不同的,这意味着它们仍然需要区别对待)
答案 2 :(得分:2)
像这样使用,
int *p;
p = myArray;
for(int i=0;i<10;i++)
{
cout<<*(p+i);
}
答案 3 :(得分:2)
如果你想要访问pos 5,你可以写:
...
int *p;
p = myArray;
cout << p[5];
由于编译器知道p是指向int的指针,因此它将为每一步添加一个int的大小(在本例中为4个字节)。 只要您不使用void指针,编译器就会为您执行此操作。 你仍然需要跟踪数组的长度,所以你不要超过它,因为指针不会这样做。
答案 4 :(得分:1)
第一个元素指向数组中元素的第一个内存位置。所以这个:
myArray[0];
和
myArray;
指向同一位置。您可以在指针上使用索引,就像填充数组一样。所以这个:
int *p = myArray;
cout << p[0];
cout << p[1];
会访问您的其他元素。您可以使用for
循环访问数组中的所有元素,就像您首先填充它一样。
答案 5 :(得分:1)
您可以将数组的名称视为指向其第一个元素的指针。
因此,行p = myArray;
只是将数组myArray
的第一个元素的地址复制到p
。
现在,行cout<<*p;
显然显示p
所指向的值,这是数组的第一个元素。
要显示所有元素,您可以像以前一样使用for
循环。