C++指针混乱

-3 c++ pointers initialization variable-assignment

在定义指针变量时,我们使用看起来像的代码

int *ip;
Run Code Online (Sandbox Code Playgroud)

但我们也可以在同一行初始化指针,指出一个随机定义的变量,即x.

int x;
int *ip = &x;
Run Code Online (Sandbox Code Playgroud)

我们也可以在另一行代码中初始化指针变量,例如,

int x;
int *ip;
ip = &x;
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我*ip用来初始化指针变量时,

int x;
int *ip;
*ip = &x;
Run Code Online (Sandbox Code Playgroud)

Visual Studio给出错误:

错误C2440'=':无法从'int*'转换为'int'

有人可以向我解释一下,我刚刚开始学习C++.

Sou*_*osh 7

请注意那里的数据类型.

当你写作

ip = &x;
Run Code Online (Sandbox Code Playgroud)

这是一份任务说明.你试图将x(一个指针,基本上int *)的地址存储到ip,这也是一个类型指针的变量int(再次int *).都好.

另一方面,当你尝试写作

*ip = &x;
Run Code Online (Sandbox Code Playgroud)

这也是一个任务,但在这里,*ip是一个int类型,&xint *和他们是不兼容的.因此,您的编译器会警告您.


FWIW,

 int *ip = &x;
Run Code Online (Sandbox Code Playgroud)

很好,因为这是初始化,不仅仅是一个简单的分配.您在定义时初始化变量ip(类型int *).请记住,这里定义和初始化的变量ip不是*ip,这与写作非常不同

*ip = &x;
Run Code Online (Sandbox Code Playgroud)

(正如我已经提到的那样,是不合适的.)

  • 你把这些话从我嘴里说出来. (4认同)