gpt4 book ai didi

c - 指针运行时错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:29:14 24 4
gpt4 key购买 nike

我已经使用下面的代码进行了简单的操作(反转字符串)。但是程序没有执行。它收到运行时错误 (SIGSEGV)。我使用了 GCC 编译器。请帮助我调试程序。

#include <stdio.h>
#include <stdlib.h>

int *create(int n) {
int *a;
a = (int *)malloc(n * sizeof(int));
return a;
}

void get(int *a, int n) {
int i;
for (i = 0; i < n; i++) {
scanf("%d", *(a + i));
}
}

void reverse(int *a, int n) {
int i;
for (i = n - 1; i >= 0; i--) {
printf("\n %d", *(a + i));
}
}

int main() {
int n, *a;
scanf("%d", &n);
a = create(n);
get(a, n);
reverse(a, n);
return 0;
}

最佳答案

scanf("%d",*(a+i)); 调用未定义的行为 因为你传递了 int where 预期 int*

你必须传递指针来告诉 scanf() 在哪里存储读取的数据,所以停止取消引用并尝试使用 scanf("%d",(a+i)); 代替。

更多的注释是:

关于c - 指针运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400349/

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