-1
我想在c中創建一個多維數組。出於測試目的,我試圖打印第一行的第一個元素。該代碼似乎正在達到這一點;然而,當我嘗試打印單元第二次,我得到一個分段錯誤:打印元素的數組兩次導致分割錯誤
#include <stdbool.h>
#include <stdio.h>
typedef struct Matrix {
bool** elem;
int length;
} Matrix;
void generateMatrix(Matrix* m);
int main() {
Matrix m = {0, 0};
generateMatrix(&m);
fprintf(stdout, "%d ", m.elem[0][0]);
fprintf(stdout, "\n");
// Comment next line if you want it to work
fprintf(stdout, "%d ", m.elem[0][0]);
return 0;
}
void generateMatrix(Matrix* m) {
const int size = 2;
bool* ptrArray[size];
bool ptr1[] = {false, false};
bool ptr2[] = {true, true};
ptrArray[0] = ptr1;
ptrArray[1] = ptr2;
m->elem = ptrArray;
m->length = size;
}
我使用Ubuntu的gcc的:
$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
這究竟是爲什麼?