int*p =&a和q =&a之间有什么区别?

Ani*_*mj' 2 c pointers

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

int a = 10;
int *p = &a;
Run Code Online (Sandbox Code Playgroud)

int a = 10;
int *q;
q = &a;
Run Code Online (Sandbox Code Playgroud)

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

bro*_*oot 5

这两个是相同的:

int *p; // declaration
p = &a; // assignment
Run Code Online (Sandbox Code Playgroud)

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

int *p=&a; // declaration and assignment
Run Code Online (Sandbox Code Playgroud)

如果你有一些编译器优化ON,编译器可能会结合这两个步骤.

  • `p =&a;`是一个赋值,而不是一个初始化. (2认同)