只是好奇的问题。在 C 中我们可以直接初始化值,也可以在定义变量后赋值。喜欢
char* pStr = NULL;
或
char* pStr;
pStr = NULL;
功能方面它们很相似,但编译后有什么区别吗?是后期需要额外的指令周期还是现代编译器足够智能来优化。
注意:我正在审查旧代码库,其中广泛使用了第二种情况。这就是为什么我很好奇,如果我可以通过更改所有地方的代码来获得真正的改变。
最佳答案
第一个片段用一个值初始化变量。第二个默认-初始化它,它对一个自动存储持续时间的指针什么都不做,然后赋值。
对于具有自动存储持续时间的非常量指针,除了您可能在初始化之前无意中使用它外,应该没有区别,这就是UB。
例如引用或常量等其他内容需要第一种样式。
关于C:定义过程中的值初始化与之后的赋值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582977/