我在C代碼中發現了一個段錯誤,並且在搜索後找不到一個好的解釋或解決方案。導致段錯誤的int指針的動態數組
這第一個代碼給我打印0
#include <stdlib.h>
#include <stdio.h>
int main() {
int **defs = malloc(16 * sizeof *defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
*defs[i] = i;
}
free(defs);
return 0;
}
這第二個代碼工作正常,後段故障。
#include <stdlib.h>
#include <stdio.h>
int main() {
int *defs = malloc(16 * sizeof defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
defs[i] = i;
}
free(defs);
return 0;
}
這些只是例子,不是我的實際代碼。我也試過做指針算術,但結果相同。 有人能解釋一下嗎?謝謝。
'* defs [i]'。在這之前,你需要初始化'defs [i]'指向某處。 –
指針必須指向某個地方纔能被取消引用 –