1 void allcMem(int *a, int n){ 2 a = (int*)malloc(n*sizeof(int)); 3 for (int i = 0; i < n; i++){ 4 a[i] = 0; 5 }//end for 6 }//end fucntion allcMem 7 8 int main(int argc, char** argv){ 9 int *pi = NULL; 10 int arr[] = { 1, 1, 1, 1, 1, 1, 1 }; 11 pi = arr; 12 allcMem(pi,5); 13 for (int i = 0; i < 7; i++){ 14 printf("%d ",pi[i]); 15 }//end for 16 printf("\n"); 17 system("pause"); 18 return 0; 19 }//end main
上面的代码最后的结果是 输出七个1,而不是5个0
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N 10 4 5 void allcMem(int **a, int n){ 6 *a = (int*)malloc(n*sizeof(int)); 7 for (int i = 0; i < n; i++){ 8 (*a)[i] = 0; 9 }//end for 10 }//end fucntion allcMem 11 12 13 14 int main(int argc, char** argv){ 15 int *pi = NULL; 16 int arr[] = { 1, 1, 1, 1, 1, 1, 1 }; 17 pi = arr; 18 allcMem(&pi,5); 19 for (int i = 0; i < 5; i++){ 20 printf("%d ",pi[i]); 21 }//end for 22 printf("\n"); 23 system("pause"); 24 return 0; 25 }//end main
这样才是正确的代码