erool950 发表于 2015-1-26 13:41:35

c++问题

#include<iostream>
using namespace std;
int main()
{
        int *p =NULL;
        int *q=NULL;
        int x =100;
        *q = 50;
        p = q = &x;
        if(p != 0)
                cout<<*p<<" "<<*q<<endl;
}
运行后说该.EXE停止工作,我用的是codeblocks

梦醒尸还魂↘___ 发表于 2015-1-26 13:41:36

本帖最后由 梦醒尸还魂↘___ 于 2015-1-28 02:06 编辑

四楼兄弟的意思大概就是这样

Victory_6226 发表于 2015-1-26 14:29:02

*q = 50; 放在 p = q = &x;这个语句后面试试

追忆lh 发表于 2015-1-26 17:58:34

缺了return语句吧,加上试试,return 0;

静清心花 发表于 2015-1-26 20:08:11

本帖最后由 静清心花 于 2015-1-26 20:29 编辑

指针q在定义时你就让它指向了NULL,也就是地址为0x00000000的那块内存区域,那块内存区域为操作系统独占的,我们的应用级程序没有权限修改它,或者说这个内存无法为我们的程序所用,而你用*p=50就会发生访问冲突,所以,你可以先定义一个int型的变量y,然后y=50;接着就可以q=&y;记得最后向主函数返回一个整型数值。

百日维新 发表于 2015-1-28 17:47:34

好久没看c++了

lark 发表于 2015-1-29 07:58:52

#include<iostream>
using namespace std;
int main(void){
      int *p =NULL;
      int *q=NULL;
      intx=100;
      int num=50;
      q=&num;
      p=q=&x;
      if(p != 0)
      cout<<*p<<"\n"<<*q<<endl;
      return 0;
}
//我只学过C++的第一章,其实根本就没学过C++,我学的是C,你看下这是你想要的结果吗?
//我不清楚C++的情况,但是感觉和C差不多,我才不管他过程还是对象之类的。
// *q=50;这好像不对,具体你问下大神吧

lark 发表于 2015-1-29 08:00:15

我去竟然没发现,下面有这么多==

优雅的独行者 发表于 2015-1-29 12:44:43

典型的野指针问题啊
页: [1]
查看完整版本: c++问题