-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++.
请注意那里的数据类型.
当你写作
ip = &x;
Run Code Online (Sandbox Code Playgroud)
这是一份任务说明.你试图将x(一个指针,基本上int *)的地址存储到ip,这也是一个类型指针的变量int(再次int *).都好.
另一方面,当你尝试写作
*ip = &x;
Run Code Online (Sandbox Code Playgroud)
这也是一个任务,但在这里,*ip是一个int类型,&x是int *和他们是不兼容的.因此,您的编译器会警告您.
FWIW,
int *ip = &x;
Run Code Online (Sandbox Code Playgroud)
很好,因为这是初始化,不仅仅是一个简单的分配.您在定义时初始化变量ip(类型int *).请记住,这里定义和初始化的变量ip不是*ip,这与写作非常不同
*ip = &x;
Run Code Online (Sandbox Code Playgroud)
(正如我已经提到的那样,是不合适的.)