小编Jan*_* C.的帖子

分段错误的原因与使用以下C代码返回随机值

请说明(输出原因)运行两个代码段会发生什么。请也说明它们的区别。分为以下两种版本setArr(int, int)...

#include <stdio.h>

void setArr(int, int);

int *arr[10]; // array of 10 int pointers

int main(int argc, char *argv[]) {
    int i;

    setArr(0, 0);
    setArr(1, 100);
    setArr(2, 200);
    setArr(3, 300);
    setArr(4, 400);

    for (i = 0; i < 5; i++) 
        printf("arr[%d]: %d\n", i, *arr[i]);   /* should be 0,100, 200,300,400 */

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

的版本 setArr

版本A

void setArr(int index, int v) {
    int i = v; 
    *arr[index] = i;
}
Run Code Online (Sandbox Code Playgroud)

输出: Segmentation fault (core dumped)

版本B

void …
Run Code Online (Sandbox Code Playgroud)

c coredump pointers segmentation-fault

1
推荐指数
1
解决办法
62
查看次数

标签 统计

c ×1

coredump ×1

pointers ×1

segmentation-fault ×1