指针调试老出错expression cannot be evaluated
发布网友
发布时间:2022-04-30 10:39
我来回答
共3个回答
热心网友
时间:2022-06-21 08:16
编译没错误没警告,表示编译没错,不等于运行时没错。
你没有给p初始化,它没有存放数值的单元。cout<<&p; 就是要它打印 存放数值的单元地址。既然没有,执行打印时就出错了。
改成:
int *p;
int a=3;
int c;
p=&c;
*p=3;
cout<< &p;
就没问题了。
给它p = &a; 当然也可以。
热心网友
时间:2022-06-21 08:17
#include "iostream"
using namespace std;
main()
{
int *p;
int a=3;
*p=3;//改为p=&a;&为取址符号,意思是把a的指针给p
cout<<&p;//改为cout<<*p;*为取值符号
return 0;
}
要记住取值取址的基本概念
热心网友
时间:2022-06-21 08:17
p是个野指针
你并没给p赋值,p里面是个垃圾值,而你访问了这个不知道在哪里的一块内存还进行了赋值操作。必然会报错的
p = &a;
*p = 5;
另外c++的cout不太确定,需要取址符?...你想输出地址?