平級指針之間作爲參數的話,參數傳遞的方式是值拷貝,就相當與普通參數的傳遞。
儘管在函數内部對指針開闢空間並賦值,但是由於是平級的指針,在函數周期結束后,函數内參數隨之消亡,由於是拷貝關係,函數外傳入的指針變量值及指向不發生變化。
所以要使用二級指針,函數内二級指針在函數周期結束的時候也會消亡,但函數内外二級指針指向的一級指針相同,所以可以將函數内的改變反饋到函數外部。
寫了一個小的例子:
#include <stdio.h>
#include<malloc.h>
void createERR(int *x)
...{
x = (int*)malloc(sizeof(int));
*x = 16;
printf("In func %d ",*x);
}
void createRight(int **x)
...{
*x = (int*)malloc(sizeof(int));
*(*x) = 16;
printf("In func %d ",*(*x));
}
void main()
...{
//平級指針 結果 5,16,5
int a=5;
int *pa = &a;
printf("Before %d ",*pa);
createERR(pa);
printf("After %d ",*pa);
printf(" ");
//二級指針 結果 5,16,16
int b=5;
int *pb =&b ;
int **ppb =&pb;
printf("Before %d ",*(*ppb));
createRight(ppb);
printf("After %d ",*(*ppb)); 
}

一級與二級指針實例
1627





