指针运行时错误

时间:2016-07-15 15:51:43

标签: 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) {
    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;
}

1 个答案:

答案 0 :(得分:1)

scanf("%d",*(a+i));调用未定义的行为,因为您通过int预期int*

您必须传递指针以告知scanf()存储数据读取的位置,因此请停止取消引用并尝试使用scanf("%d",(a+i));

更多说明是: