C 指针运行时错误

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) {

我已经使用下面的代码进行了一个简单的操作 (反转字符串)。但是程序没有执行。它得到一个运行时错误(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;
}
#包括
#包括
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))取而代之

更多注意事项包括:

  • 你应该检查读数是否成功
  • 他们说