初始化int变量时的分段错误(核心转储)

Gou*_*eru 2 c arrays pointers initialization segmentation-fault

由于变量'b'的初始化而出现分段错误.有人请帮帮我.

#include "stdio.h"
#include "string.h"

int main(){
    char *z[20], *x, *y = {"abcd"};
    int i, j, b = 4;
    for (i = 0 ; i < 4 ; i++) {
         for (j = 0 ; j < b ; j++) {
             *(x + j) = *(y + j + i);
             z[i] = x;
             printf("%s", z[i]);
             printf("\n");
         }
         b--;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Iha*_*imi 5

您取消引用x未在任何地方初始化,因此是无效指针

*(x + j) = *(y + j + i);
Run Code Online (Sandbox Code Playgroud)

可能的方法:

还有一件事是,每z[i]一个被初始化的,都将指向相同的数据,即x如果你应用我建议的解决方案,则指向数组.