我目前正在学习C中的指针.我对指针的初始化感到困惑.我可能会问一些愚蠢的问题,但我只想确保理解并正确地学习.
所以,要初始化一个指针:
int a = 3;
int *pointer = &a;
*pointer = 10;
Run Code Online (Sandbox Code Playgroud)
要么
int a = 3;
int *pointer;
pointer = &a;
*pointer = 10;
Run Code Online (Sandbox Code Playgroud)
到目前为止,我知道"*"声明了一个指针类型.
*pointer 是指针指向的地址中任何值的值.
& 是某事物的记忆地址.
在第二种情况下,我可以理解'pointer =&a'.
但是,为什么我们在上面的第一种情况下设置*pointer =&a,因为*pointer表示该地址中的值?
为什么我们在初始化指针时使该指针中的值等于第一种情况下变量的地址?
令人困惑的是,星号*pointer = 10和星号int *pointer = &a表示两种不同的东西.
*pointer = 10取消引用变量pointer并将值分配给10取消引用操作的结果.int *pointer = &a将变量声明pointer为类型int *,并使用值初始化它&a.这里没有解除引用.星号是在这里要提醒大家,当提领pointer你会得到一个int.换句话说,这声明是pointer这样*pointer的int.