C:定义过程中的值初始化与之后的赋值比较

标签 c gcc compiler-optimization

只是好奇的问题。在 C 中我们可以直接初始化值,也可以在定义变量后赋值。喜欢

char* pStr = NULL;

char* pStr;
pStr = NULL;

功能方面它们很相似,但编译后有什么区别吗?是后期需要额外的指令周期还是现代编译器足够智能来优化。

注意:我正在审查旧代码库,其中广泛使用了第二种情况。这就是为什么我很好奇,如果我可以通过更改所有地方的代码来获得真正的改变。

最佳答案

第一个片段用一个值初始化变量。第二个默认-初始化它,它对一个自动存储持续时间的指针什么都不做,然后赋值。

对于具有自动存储持续时间的非常量指针,除了您可能在初始化之前无意中使用它外,应该没有区别,这就是UB。

例如引用或常量等其他内容需要第一种样式。

关于C:定义过程中的值初始化与之后的赋值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582977/

相关文章:

c - 使用##连接宏常量

c++ - 通过重载 = 运算符从 std::string 创建 String 对象

assembly - 如果没有在 ASM 模板中指定,那么提供输入和输出操作数有什么意义呢?

c++ - 微软 C++ 编译器 : how to disable auto-vectorization with/O2?

Javac 缺少有效 final 的优化

你能绑定(bind)()和连接()UDP连接的两端吗

c - 为什么打印出错误的数组值?

c - sscanf C 初学者

linux - 使用 gcc 指定目标

c++ - continue 是即时的吗?