2

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

首先是主要功能

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

现在函数

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

一种情况如下:“如果没有指向变量,即如果变量的地址为NULL,则您的函数将指向的变量的值设置为零。”

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

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

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

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

或者这个问题是错误的,它应该说存储在地址中的值,指针变量指向的地址是空的,即 y=Null ???

如果 int* z 是一个空指针,那么 z 指向的地址的值是多少,存储在指向的地址中的值是多少???

4

2 回答 2

2

这很可能意味着:

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

即,要求是将空指针与指向零的指针相同。

于 2013-10-03T20:16:01.997 回答
0

这两行不起作用:

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

当您尝试取消引用被禁止的 NULL 时。

你想要做的是这样的:

if (x==NULL)
    x = new int(0);
于 2013-09-29T09:39:21.463 回答