C++/oop---指针
C++/oop---指针
按理说指针不是c++特有的东西,只是我恰好发现自己不太会,赶紧补一下
指针保存着变量的地址,改变指针所指的地址上的值即改变变量
int a=1; int *p=&a; cout<' '<<*p<<endl; //0x1ed4fe1c 1 *p=2; cout<endl;
//2
空指针
int *p=NULL;
则 p 指向 0 ,也就是什么都没有
指针可以++ ,-- 这在指针指向数组元素时有用
指向数组的指针
数组名其实是一个地址,指向数组的头
int x[10]={1,2,3}; int *p=x; cout<' '<<(*p)<<' '<
0]<<' '<
1]<<endl; //0x1ed4fdf0 1 1 2
例如x=0x1ed4fdf0
x[0] 应该是*x的另一种写法
x[1]为*(x+1)
...
也就是一维数组的本质是指针,给函数传数组相当于传一个指针
int f(int *a){ int sum=0; for(int i=0;i<10;i++)sum+=a[i]; return sum; } int main(){ int x[10]={1,2,3}; cout<endl; return 0; }
似乎写成 int f(int a[]) 也可以,原理我暂时不清楚
指针数组
int *s[10]; 相当于10个指针
数组指针
int (*s)