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)