空指针和C ++ Visual Studio和gcc编译器中为null的地址

时间:2013-09-29 09:32:47

标签: c++ pointers gcc

我尝试过很多教程并且更加困惑。所以请用最简单的答案教这个菜鸟。如果可能的话,那就坚持问题......我的信息超载了:)

首先是主要功能

main(){
  int y=0;
  display(&y);
}

现在功能

int display(int* x){
  //do something depending on different values of x
}

其中一个案例如下: “如果没有指向变量,也就是说,如果变量的地址为NULL,则函数将变量的值设置为零。”

现在我需要做的显示功能的理解

if (x==NULL)
   *x=0;

现在这里是我被困的地方...... - 如果我用显示调用该函数(NULL);我在Visual中遇到以下错误 “BTP 300 A1.exe中0x00C84036处未处理的异常:0xC0000005:访问冲突写入位置0x00000000。”

如果函数的地址为null,我如何在函数中存储y值?

或问题是错误的,它应该将指定变量指向的地址存储的所述值为空,即y = Null ???

如果int * z是一个空指针,而不是z所指向的地址的值,以及存储在指向的地址中的值是什么?

2 个答案:

答案 0 :(得分:2)

最有可能的,这意味着:

int value_to_display = x? *x: 0;
// do something with value_to_display

即,要求将空指针视为指向零的指针。

答案 1 :(得分:0)

这两行不起作用:

if (x==NULL)
*x=0;

因为你试图取消引用被禁止的NULL。

你想要做的是:

if (x==NULL)
    x = new int(0);