c - int *p = &a 和 q = &a 有什么区别

标签 c pointers

学习者问题。我可以用两种不同的方式声明和初始化一个指针

int a = 10;
int *p = &a;

还有

int a = 10;
int *q;
q = &a;

我想知道两者之间有什么区别,它在内存中是如何工作的?

最佳答案

这两个是一样的:

int *p; // declaration
p = &a; // assignment

而在另一个中,您将两个步骤合二为一:

int *p=&a; // declaration and assignment

如果您启用了一些编译器优化,编译器可能会将这两个步骤结合起来。

关于c - int *p = &a 和 q = &a 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767095/

相关文章:

c++ - 包含 C 文件/与 CMake 的链接不适用于 C++ : cannot include function

c - 结构点问题

c - 将格式化文本文件读入数组的语法,C

段错误的原因;函数调用后指针值丢失

c - 加载我的链接列表时出现问题

c - 如何将大括号括起来的初始化列表作为参数传递?

c++ - 在C++中初始化一个指针

pointers - 结构指针和整数指针输出有什么区别?

c - 段错误,第一次使用二维数组

c++ - 将 std::unique_ptr 与标准容器一起使用