#import <iostream>
using namespace std;
main()
{
int andy = "25";
int andy1 = * andy;
int andyand = & andy;
cout <<"hello"<<endl<<andy<<endl<<andy1<<andyand;
};
我刚刚开始在c ++中使用指针,我无法理解为什么我会得到这些: 错误:来自&#39; const char *&#39;的无效转换到&#39; int&#39; 错误:一元&#39; &#39;的无效类型参数(有&#39; int&#39;)| 和 错误:来自&#39; int &#39;的转换无效到&#39; int&#39;
答案 0 :(得分:4)
首先,在C ++中,你不应该使用“原始”指针。
现在,关于你的问题:错误消息说:“从const char *到int的转换无效。”
int andy = "25";
"25"
是一个字符串文字(类型为const char*
)。你想要一个整数常量:
int andy = 25;
现在 - andy
不是指针,因此您无法应用*
运算符 - 这就是您第二次错误(invalid type argument of unary '*'
)的原因。
最后,阅读一本书或有关这些内容的教程,因为您没有在代码中的任何位置使用指针,而只是盲目地使用&
和*
运算符。
这可能是使用指针的一个例子:
int andy = 25;
int *andy1 = &andy; // andy1 is the pointer - see star after type declaration
// with &andy we're assigning the address of andy variable to it
int andyand = *andy1; // star before pointer is dereferencing - reads the value of the memory
// address where pointer is pointing to. So, *andy1 evaluates to 25
cout << "hello" << endl << andy << endl << *andy1 << andyand;
哦,除了我之外,每个人都注意到这一点 - 不幸的是(对于你和我们),C ++中没有import
指令 - 但是it should be with us in a few years。
答案 1 :(得分:1)
只需写下:
using namespace std;
main()
{
int andy = 25; // no quotation marks
int* andy1 = &andy; // use "&" to take the addrees of andy for your pointer
int* andyand = & andy;
cout <<"hello"<<endl<<andy<<endl<<andy1<<endl<<andyand;
};
不需要在整数变量中使用引号。
答案 2 :(得分:1)
这里有很多无效的语法:
#import <iostream> // WRONG!
using namespace std;
main()
{
int andy = "25"; // Not good
int andy1 = * andy; // not good
int andyand = & andy; // not good
cout <<"hello"<<endl<<andy<<endl<<andy1<<andyand;
}
你应该拥有的是:
#include <iostream>
using namespace std;
main()
{
int andy = 25; // 25 is an int, "25" is a char*
//int andy1 = *andy; // andy is not a pointer, so you cannot dereference it
int* andyand = &andy; // andyand now points to andy
cout <<"hello"<<endl<<andy<<endl<<*andyand;
}
将打印出来
hello
[value of andy]
[value of andy]
答案 3 :(得分:1)
C ++中没有#import指令。我想你的意思是
#include <iostream>
函数main应具有返回类型int。
不带引号指定积分文字。而不是
int andy = "25";
应该写
int andy = 25;
还有这些陈述
int andy1 = * andy;
int andyand = & andy;
无效。目前尚不清楚你想要定义什么。