使用指针c ++时出现错误信息

时间:2013-11-19 20:51:59

标签: c++ pointers

#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;

4 个答案:

答案 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;

无效。目前尚不清楚你想要定义什么。