指针(二):指针与数组
1.指针与数组的关系
指向数组的指针变量称为数组指针变量。“数组是内存上一块连续的空间”。数组名就是这块连续空间的首地址。
2.指针指向数组
一开始的数组定义与输出:
#include<iostream> #include<cstdio> using namespace std; int main(){ int a[10]; for(int i=0;i<5;i++){ cin>>a[i]; } for(int i=0;i<5;i++){ cout<<a[i]<<" "; } return 0; }
指针操作也可以输入数据:
#include<iostream> #include<cstdio> using namespace std; int main(){ int a[10]; for(int i=0;i<5;i++){ scanf("%d",a+i); //本来写成scanf("%d",&a[i]); } for(int i=0;i<5;i++){ printf("%d ", *(a+i)); // } return 0; }
上面这个操作,本来scanf("%d",&a)写法,其中&是取地址符,a是数组名,本来就表示数组空间的首地址,所以可以直接用。注意,这个地方不能用cin。
数组指向指针操作:
我们可以定义指针变量,让它来指向数组名。
#include<iostream> #include<cstdio> using namespace std; int main(){ int a[10]; int *p=a; for(int i=0;i<5;i++){ scanf("%d",p+i); //本来写成scanf("%d",&a[i]); } for(int i=0;i<5;i++){ printf("%d ", *(p+i)); } return 0; }
2.指针的加减
指针也是变量,可以加减。
#include<iostream> #include<cstdio> using namespace std; int main(){ int a[10]={1,2,3,4,5}; int *pa=a; cout<<a[0]<<endl; //结果是1 cout<<pa<<endl; //0x70fdf0 cout<<*pa<<endl; //结果是1 pa++; cout<<pa<<endl; //0x70fdf4 cout<<*pa<<endl; //2 pa=pa+2; cout<<pa<<endl; //0x70fdfc cout<<*pa<<endl; //4 pa--; cout<<pa<<endl; //0x70fdf8 cout<<*pa<<endl; //3 return 0; }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。