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

指针*

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);
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值