1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 int **pointer = (int **)(malloc(5 * sizeof(int *))); //此處沒有問題,動態內存分配,分配了一個指針數組,數組元素是指向int的指針 7 8 int a = 100; 9 printf("Please input 5 numbers:\n"); 10 /*for (int i = 0; i < 5; ++i) { 此注釋部分有問題的,但還沒發現哪里出現了問題,在《指針作參數的動態內存分配與二重指針上》中的代碼中也有解釋 11 scanf("%d", pointer[i]); 我們要對指針數組中的指針元素賦值啊,scanf語句是對指針元素所指向的整型數據賦值了,所以程序會崩潰!細節問題加深理解。 12 }*/ 13 printf("\nThe order is:\n"); 14 for(int i = 0; i < 5; ++i) { 15 pointer[i] = &a; //這樣就沒有問題了,同樣是對pointer[i]賦值。。。回頭在研究。。。 16 printf("%d ", *pointer[i]); 17 } 18 19 free(pointer); 20 return 0; 21 }