可能重复:
Is array name a pointer in C?
How do I use arrays in C++?
以下程序显示数组和指针的相同属性...数组元素是否与pinters有某种关系?
#include <iostream>
using namespace std;
int main(){
int a[3];
for(int i=0;i<3;i++){
cin>>*(a+i);
cout<<*(a+1);
}
return 0;
}
答案 0 :(得分:4)
C FAQ回答了许多关于数组和指针的常见问题,并且数组不是指针,但有一些神奇的东西让它们看起来像指针...
答案 1 :(得分:0)
在C(和C ++)中,您可以向数组添加(或子)索引,并获取该成员的地址。 您也可以使用该数组,因为它是指向其第一个成员的指针。看到那段代码:
int a[5]={0,1,2,3,4};
int *p=a;
printf("%d %d\n",a[3],p[3]); //should print 3 3
printf("%p %p %p\n",p+3,a+3,&a[3]); //should print the same address 3 times.
答案 2 :(得分:0)
指针是一个变量,它包含数组元素的地址。以这种方式,它“指向”该数组(到数组的元素或数组的开头)。您在此代码中使用的是计算某个元素的地址,然后取消引用该地址。 实际上,代码
*(a+i) // this is the value of the element with address a+i
// here a - is a pointer to beginning of array "a"
// a+i - is an address of particular element
相当于
a[i]
答案 3 :(得分:-4)
是。数组和指针是相关的。没有方括号的数组名称(在您的示例中为a)具有数组基址的地址或数组的第0个元素。所以它实际上是一个指针。正常的指针添加也适用于它。例如 -
int arr[10];
cout<<"Address of the 0th element = " <<arr;
cout<<"Value of the 0th element = "<<*arr; //arr is a pointer here
arr=arr+1;//arr now points to the 1st element of the array,