1 2 3 4 5 6 7 8 9 10 11 12
| int m,n; m=100; int *pm; pm=&m; cout<<pm<<" "<<*pm;
*pm=300;
|
1 2 3 4 5 6 7
| int *pm=&n; //*pm定义指针 *pm=&m; //*pm表示间接引用,*pm相当于n //错误,一级指针无法做到,相当于将m的地址赋值给n
*pm=m; //将m的值赋值给n
pm=&m; //改变pm指针变量的指向,使pm指针指向m的地址
|
1 2 3 4 5 6 7 8 9 10
| int a[10]={1,2,3,4}; int *p=a;//p起始指向a[0] for(;p<a+10;p++)//p++会使p=a[0]变为p=a[1]... { cout<<*p<<" "; }
//1 2 3 4 0 0 0 0 0 0
|
指针访问数组下标法
1 2 3 4
| int a[10]={1,2,3,4}; int *p = a; for(int i=0;i<n;i++) cout<<p[i]<<endl;
|
指针访问数组指针法
1 2 3 4
| int a[10]={1,2,3,4}; int *p = a; for(int i=0;i<n;i++,p++) cout<<*p<<endl;
|
数组的传参
在c++中,当数组作为函数传参时,实参数组给形参数组传递的是指向数组首元素的指针,而不是数组的副本。
即在函数中改变数组元素会对原数组产生影响。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int display(int m[],int n) { for(int i=0;i<n;i++) //不能m++,因为数组名是一个地址,不能给数组赋值运算 cout<<m[i]; for(int i=0;i<n;i++)//改变数组 m[i]=i*3; }
int main() { int a[10]={5,6,7}; display(a,10); display(a,10); }
//5 6 7 0 0 0 0 0 0 0 //0 3 6 9 12 15 ... //
|
指针在数组中的应用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| int display(int *m,int n) { for(int i=0;i<n;i++) cout<<*m++;//*m++即*(m++),但是不改变后++的原则,该复合操作符表示先取出m所指向的内存单元中的值,如何将指针m自增加1,指向下一元素。 m=&a[0]; //使m指向a的初始元素 for(int i=0;i<n;i++,m++)//改变数组 *m=i*3; }
int main() { int a[10]={5,6,7}; display(a,10); display(a,10); }
//5 6 7 0 0 0 0 0 0 0 //0 3 6 9 12 15 ... //
|