传递指针的指针(错误的例子)

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 
 5 void allarray(int *arr, int size, int value)
 6 {
 7     arr = (int*)malloc(size * sizeof(int));
 8     printf("arr = 0x%p
", arr);
 9     if(arr != NULL)
10     {
11         for(int i=0; i<size; i++)
12         {
13             arr[i] = value;
14             printf("arr[%d] = 0x%p
", i,arr[i]);
15             printf("&arr[%d] = 0x%p
", i,&arr[i]);
16         }
17     }
18 }
19 
20 int main()
21 {
22 
23     int *vae = NULL;
24     allarray(&vae,5,45);
25     printf("%p
", vae);
26     printf("0x%p
", &vae);
27     printf("Hello world!
");
28     return 0;
29 }

显示结果:

 1 arr = 0x003C6F68
 2 arr[0] = 0x0000002D
 3 &arr[0] = 0x003C6F68
 4 arr[1] = 0x0000002D
 5 &arr[1] = 0x003C6F6C
 6 arr[2] = 0x0000002D
 7 &arr[2] = 0x003C6F70
 8 arr[3] = 0x0000002D
 9 &arr[3] = 0x003C6F74
10 arr[4] = 0x0000002D
11 &arr[4] = 0x003C6F78
12 00000000
13 0x0028FF1C
14 Hello world!

所以是一个错误的例子。

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/10637551.html