C 添加 printf 函数后出现分段错误.注释掉后工作正常



执行这部分代码后出现分段错误。如果我注释掉第一个打印f,它工作正常。为什么会这样?

#include <stdio.h>
int Func (int *a){
    printf("%dn",56 );
  printf("a is %dn",*a );
  return 3;
}

int main(){
  int N, i, Planet, *a,junk;
    junk=scanf("%d", &N );
    *a = N;
    Planet = Func(a);
    printf("%dn", Planet);
    return 0 ;
}

main 函数中,您定义了 int *a 指针变量:

int main(){
  int N, i, Planet, *a,junk;

但是,您取消引用了指针,而之前没有为其分配任何内存,也没有将其设置为指向有意义的内容:

 *a = N;

这会导致未定义的行为。

您可能想要的是向N提出a点?如果是这样,这是正确的语法:

a = &N;

现在您可以使用*a将一些内容写入N


附言作为一般规则,我建议您每行声明一个变量,并初始化指向NULL的指针,例如:

int man() {
  int *a = NULL;
  ...

相关内容

  • 没有找到相关文章

最新更新