零维指针与一维数组
| int a[4]={1,2,3,4};
int *p;
p=a; //等效于p=&a[0]
for(int i=0; i<4; i++){
cout<<*(a+i)<<' '; //等效于a[i]
}
for(int i=0; i<4; i++){
cout<<a[i]<<' ';
}
for(int i=0; i<4; i++){
cout<<*(p+i)<<' '; //等效于p[i]
}
for(int i=0; i<4; i++){
cout<<p[i]<<' ';
}
for(int i=0; i<4; i++){
cout<<*(p++)<<' ';
}
|
| int a[4]={1,2,3,4};
int *p;
p=a; //等效于p=&a[0]
|
int *定义了一个**零维**的指针*p(一次只能指向一个点),p=a把p指向了数组a第一个元素的地址。其中,数组名a的作用是“数组a第一个元素的地址”,即&a[0]
| for(int i=0; i<4; i++){
cout<<*(a+i)<<' '; //等效于a[i]
}
for(int i=0; i<4; i++){
cout<<a[i]<<' ';
}
|
*(首地址a+偏移量i)可以访问一维数组的元素
数组名a[偏移量i]或者说数组名a[下标i]也可以访问一维数组的元素
| for(int i=0; i<4; i++){
cout<<*(p+i)<<' '; //等效于p[i]
}
for(int i=0; i<4; i++){
cout<<p[i]<<' ';
}
for(int i=0; i<4; i++){
cout<<*(p++)<<' ';
}
|
p这时已经存储了数组a的首地址(首元素的地址),所以
- *(首地址p+偏移量i)可以访问一维数组的元素:p+i或者逐渐的p++都行
- 等效数组名p[偏移量i]也可以访问一维数组的元素