gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:20:19 26 4
gpt4 key购买 nike

执行这部分代码后出现段错误。如果我注释掉第一个 printf,它工作正常。为什么会发生这种情况?

#include <stdio.h>

int Func (int *a){
printf("%d\n",56 );
printf("a is %d\n",*a );
return 3;
}


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

junk=scanf("%d", &N );
*a = N;
Planet = Func(a);
printf("%d\n", Planet);
return 0 ;
}

最佳答案

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

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

但是你取消引用了指针,之前没有为它分配任何内存,也没有将它设置为指向有意义的东西:

 *a = N;

这会导致未定义的行为。

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

a = &N;

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


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

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

关于添加 printf 函数后出现 C 段错误。注释掉后工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com