C++ 4_15自学

第一段代码

int updates = 6;
int *p_updates;         // 声明指针
p_updates = &updates;   // 赋值


首先声明并初始化了一个整型变量 updates,其值为 6。
然后声明了一个指向整型的指针 p_updates,但此时它没有被初始化,也就是说它没有指向任何有效的内存地址。
最后一行将 updates 的地址赋给了 p_updates,使 p_updates 指向了 updates 变量。

第二段代码

int updates = 6;
int *p_updates = &updates;  // 声明并初始化


同样首先声明并初始化了一个整型变量 updates,其值为 6。
在第二行同时声明了一个指向整型的指针 p_updates 并将其初始化为 updates 的地址。这意味着 p_updates 在声明的同时就被赋予了一个有效的内存地址,指向了 updates 变量。

✅ 二、这两段代码的含义和结果是否一样?

比较项是否相同
最终效果✅ 完全一样
p_updates 的指向✅ 都指向了 updates 变量
内存布局✅ 完全一致
编译后的机器码✅ 几乎完全一致(可能有极小优化差异)

✅ 三、那它们的区别在哪?

虽然最终行为一致,但它们在语法结构上是有区别的:

区别点分开写(示例1)合并写(示例2)
声明和赋值是否分离✅ 是❌ 否
可读性更适合新手理解更适合熟悉语法的人
是否可以延迟赋值✅ 可以❌ 必须立即赋值
是否能避免野指针风险❌ 如果中间用了未赋值的指针会有风险✅ 初始化即有效,更安全

四、什么是“声明”和“初始化”?

声明(Declaration):告诉编译器这个变量存在。

int *p_updates;  // 声明一个指针变量


初始化(Initialization):在声明时就赋予初始值。

int *p_updates = &updates;  // 声明 + 初始化


赋值(Assignment):在声明之后再给变量赋值。

p_updates = &updates;  // 赋值操作


✅ 五、为什么建议用 int *p_updates = &updates;?

减少野指针风险
如果你先声明指针但忘记赋值,后续使用会导致未定义行为。
初始化就赋值,保证指针一开始就是有效的。
更符合现代 C/C++ 编程风格
推荐在声明变量的同时进行初始化,提高代码可读性和安全性。
便于维护
看到一行就知道这个指针指向哪里,不用找后面的赋值语句。
✅ 六、总结一句话:

int *p_updates = &updates; 是一种 声明+初始化 的写法,而 p_updates = &updates; 是 单独赋值 的写法。

在功能上它们是等价的,但在代码风格和安全性上,初始化写法更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值