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

标签 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;

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

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

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

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

最佳答案

这很可能意味着:

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

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

关于c++ - C++ Visual Studio 和 gcc 编译器中的空指针和空地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076452/

相关文章:

c++ - 在 C++ 标准中通过指向函数的指针传递数组的严格规则背后的原因

c 带字符串的指针

c++ - 将多个指针作为参数传递给 pthread_create

c - 在 C 函数中修改数组

c - gcc : Segmentation fault when it executes "stosb" 中的扩展 asm

c++ - Valgrind:有条件的跳跃或移动取决于未初始化的值

c++ - g++ Bash For Windows 和 Ubuntu 的区别

c - 为什么我无法重定向 gcc -H 的输出

c++ - 未声明类的类成员

python - 如何用python2.6安装psycopg2-2.6