[C/C++]C/C++中 *和&、指针和地址 的基本概念

1. 代码示例

先来看一段简单的代码:

int a = 10;
int * p;
p = &a;
cout << a << endl;
cout << &a << endl;
cout << p << endl;
cout << *p << endl;

2. 逐行解析

int a = 10; 定义一个int型变量a。
计算机在内存中自动找到一块空间,这块空间取名为a,把你给a赋的值存储在这个空间里。
int * p; 定义一个指向int型变量的指针p。
p = &a; 指针p指向变量a。&a 表示a的地址。p = &a; 表示变量a的存储单元的地址存入到p存储单元中,即p中存储的是a的地址。
指针示意图
(假设a的地址为0x100)
cout << a << endl; 输出:10
cout << &a << endl; 输出:0x0100
cout << b << endl; 输出:0x0100
cout << *b << endl; 输出:10

3. 总结

  1. a
    表示a对应的存储单元中的数据

  2. &a
    表示a对应的存储单元的地址

  3. *p
    表示p中存储的地址对应的存储单元中的数据
    首先,要求p中对应的存储单元中的数据必须是另一个存储单元的地址。于是*p表示另一个存储单元中的数据,访问*p就是访问此数据。

  4. int a;
    表示变量a声明的类型是int;
    a中存储的是一个int型数值
    通过a可以访问(读取或修改)这个数值。

  5. int * p;
    表示变量p声明的类型是int * ,是一个int型指针变量
    p中存储的是一个存储单元的地址,而此存储单元存储的数据是一个int型数值。
    通过* p可以访问(读取或修改)这个数值。

  6. a == &* a:a是一个指针,存储的是地址
    a == * &a:a是一个普通变量,存储的是数值、字符等

  7. int ** a;
    a中存储的是一个存储单元的地址,而该存储单元中存储的数据是另外一个存储单元的地址,另外一个存储单元中存储的是一个整型数值;
    通过**a可以访问(读取或修改)这个数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值