指针调试老出错expression cannot be evaluated

#include "iostream"
using namespace std;
main()
{
int *p;
int a=3;
*p=3;
cout<<&p;
return 0;
}
编译没错误没警告

编译没错误没警告,表示编译没错,不等于运行时没错。

你没有给p初始化,它没有存放数值的单元。cout<<&p; 就是要它打印 存放数值的单元地址。既然没有,执行打印时就出错了。

改成:
int *p;
int a=3;
int c;
p=&c;
*p=3;
cout<< &p;
就没问题了。

给它p = &a; 当然也可以。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-23
#include "iostream"
using namespace std;
main()
{
int *p;
int a=3;
*p=3;//改为p=&a;&为取址符号,意思是把a的指针给p
cout<<&p;//改为cout<<*p;*为取值符号
return 0;
}
要记住取值取址的基本概念
第2个回答  2012-12-23
p是个野指针
你并没给p赋值,p里面是个垃圾值,而你访问了这个不知道在哪里的一块内存还进行了赋值操作。必然会报错的

p = &a;
*p = 5;

另外c++的cout不太确定,需要取址符?...你想输出地址?

指针调试老出错expression cannot be evaluated
编译没错误没警告,表示编译没错,不等于运行时没错。你没有给p初始化,它没有存放数值的单元。cout<<&p; 就是要它打印 存放数值的单元地址。既然没有,执行打印时就出错了。改成:int *p;int a=3;int c;p=&c;p=3;cout<< &p;就没问题了。给它p = &a; 当然也可以。

...Error: expression cannot be evaluated 待高手指点啊!悬赏不多...
出现这样的错误一般是由于对变量的初始化不正确或者根本就还没有初始化就直接引用变量。只要在对变量进行引用前确保变量已经正确初始化就可以避免此类错误。另外结构体指针变量在赋值之前要先用malloc()分配一个内存空间。

...出现error:expression cannot be evaluated
你在主函数定义了一个指针str,但是没有给它分配,所以str指向是一个无效的地址,然后你的子函数参数1分配了一个指针char *p,这个指针的所有权是子函数的,当你调用子函数的时候,str的值被复制到了p中,此时p同样也是一个无效的指针,当调用malloc后,p会分配到一段有效内存空间,但是str仍然指向的是...

C++运行错误: CXX0030: Error: expression cannot be evaluated
估计是你自己写错了

如何使用Google日志库
这个宏参数可以用NULL指针.NULL与non-NULL比不等.两个NULL是相等的.Note that both arguments may be temporary strings which aredestructed at the end of the current "full expression"(e.g., CHECK_STREQ(Foo().c_str(), Bar().c_str()) whereFoo and Bar return C++'sstd::string).CHECK_DOUBLE...

相似回答