使用指针时出现异常行为和编译器错误

pavles6

我是C语言的新手,几个月来我一直在使用指针,试图弄清它们的工作原理并学习使用它们的语法,但是当编译器抛出错误时,我遇到了令人困惑的部分,[1] 1473 segmentation fault (core dumped) ./a.out但是我认为代码语法是正确。

由于我正在研究动态数据结构,因此很多时候一切似乎都很好,但是偶尔我会遇到一些奇怪的错误,因此我提供了一个使用指针的简单示例,这使我感到困惑。

#include <stdio.h>

int main ()
{
  int *b;
  printf ("Enter some int value -> ");
  scanf ("%d", b);

  printf ("Entered value is: %d", *b);


  return 0;
}

我在声明一个变量,它是指向内存中整数的指针。由于它在scanf()参数中的指针只是该变量的名称,当我将其打印到stdout(printf())时,我使用* b,因为指向指针的指针是该变量的实际值。

火焰

*b没有指向任何地方。尝试这个:

#include <stdio.h>
#include <stdlib.h>
int main ()
{
  int *b = malloc(sizeof(int)); // dynamically allocate memory
  printf ("Enter some int value -> ");
  scanf ("%d", b);

  printf ("Entered value is: %d", *b);
  free(b); // free the dynamically allocated memory
  return 0;
}

或通过指向堆栈上的变量而不进行动态内存分配:

#include <stdio.h>
int main ()
{
  int a;
  int *b = &a;
  printf ("Enter some int value -> ");
  scanf ("%d", b);

  printf ("Entered value is: %d", *b); // or have a instead of *b
  return 0;
}

确保考虑编译器给您的警告。您的代码可能会触发有关使用未初始化的局部变量'b'的警告。如果未收到警告,请查看是否可以将编译器配置为更严格。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 MATLAB 编译器生成的 c# 中初始化 dll 时出现异常

使用strcpy时出现异常错误

$ state和$ stateProvider在使用无限滚动和for循环时出现异常行为

编译时出现异常:错误的版本50.0,应为49.0

引发异常时的编译器错误

使用shared_ptr和make_shared时出现奇怪的编译器错误

C 编译器 (GCC) 在使用 Flex 和 Bison 时出现几个错误

使用不在基类中的基类指针调用派生类函数时出现编译器错误

使用constexpr和lambda时的编译器错误

使用带有void的函数接口时出现意外的Typescript编译器行为

编译Qt时出现编译器错误

尝试使用random_device,mt19937和uniform_int_distribution时出现许多编译器错误

创建zipfile时出现异常错误

程序适用于 onlineGDB 编译器,但使用 MinGW 编译时出现逻辑错误

为什么使用OpenGL编译顶点着色器时出现着色器编译器错误#143,#160和#216?

C ++编译器的异常行为

编译器对 make 的异常行为

在Eclipse中使用Ant时,运行javac.exe编译器消息时出现错误

使用通用数组时出现异常?

构建CImg时出现致命错误(编译器限制)

导入json文件时出现Typescript编译器错误

发布:准备时,javac出现了Maven编译器错误

存档时出现Swift编译器错误

尝试创建菜单时出现编译器错误

尝试从struct打印时出现编译器错误

C ++:使用Visual Studio编译器时的const指针

在JavaScript中循环访问数组时出现异常行为

尝试访问多个列时出现异常行为

调用隐式声明的函数时出现异常行为