学习者的问题.我可以用两种不同的方式声明和初始化指针
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)
我想知道两者之间有什么区别,它在内存中是如何工作的?
这两个是相同的:
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,编译器可能会结合这两个步骤.