指針*、引用&、地址&、指針的引用*&、指針的指針**

指針*

int *p = 0; //表示int *p; p=0; p指向地址爲0的位置。
p = new int; //改變的是p指向的內存的地址
*p = 1; //地址爲p的那塊內存的值賦爲1

引用&

int a;
int b = &a; //b是a的別名,b和a除了名字不一樣,其他(包括地址)都一樣
b = 2;//a也變成2

地址&

int a = 1;
int *b = &a;// 指針b指向a的地址 也就是int *b;b = &a;
*b = 2;// a也變成2

指針的引用*&

一般在函數中用到指針的引用

//指針的引用體現在x和b 1.指向的地址 2.自身的地址都一樣
//即&b == &x, b == x,也可以說x就是b
int fun1(int *& x){
    x = new int;
    *x = 200;//b不指向a,b新指向一個內存並賦值爲200,a不變
}

//x和b指向的地址一樣,但本身的地址不一樣
int fun2(int *x){
    x = new int;//這個語句對b一點影響都沒有,完全是新開的一個空間
    *x = 2; //我們一般用這個函數進行值的修改
}

int main(){
    int a = 1;
    int *b = &a;
    fun(b);
}

指針的指針

//x = b的地址
//*x = b指向的內存的地址
//**x = a所在內存的值
int fun(int **x){
    //x = 0x......我們一般不直接修改x的值,否則全亂了
    *x = new int;// b = new int的地址
    **x = 2; //*b = 2
}

int main(){
    int a = 1;
    int *b = &a;
    fun(&b);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章