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