C 指针运行时错误
我已经使用下面的代码进行了一个简单的操作 (反转字符串)。但是程序没有执行。它得到一个运行时错误(SIGSEGV)。我使用了GCC编译器。请帮我调试这个程序C 指针运行时错误,c,pointers,dynamic,C,Pointers,Dynamic,我已经使用下面的代码进行了一个简单的操作 (反转字符串)。但是程序没有执行。它得到一个运行时错误(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) {
#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;
}
#包括
#包括
int*创建(int n){
int*a;
a=(int*)malloc(n*sizeof(int));
返回a;
}
void get(int*a,int n){
int i;
对于(i=0;i=0;i--){
printf(“\n%d”,*(a+i));
}
}
int main(){
int n,*a;
scanf(“%d”和“&n”);
a=创建(n);
得到(a,n);
反向(a,n);
返回0;
}
scanf(“%d”,*(a+i))代码>调用未定义的行为,因为您传递了int
其中应传递int*
您必须传递指针告诉scanf()
将读取的数据存储在何处,因此请停止取消引用并尝试使用scanf(“%d”,(a+i))代码>取而代之
更多注意事项包括:
- 你应该检查读数是否成功
- 他们说