用指針做函數參數的好處,
首先要理解函數傳參的過程,函數傳參是復制型的,例如
void modify(int a)
{
a++;
}
void main()
{
int a=5;
modify(a);
printf("%d",a);
}
程序執行完之后,a的值還是5,為什么呢,因為在執行modify函數的時候,是另外開辟了存儲空間,將a的值復制過去,然后modify函數所進行的所有操作都是針對這個新開辟的空間而言的,因此程序執行完之后,a的值並沒有發生改變,
如果我們用指針去傳遞參數,那么久完全不一樣了,
void modify(int * a)
{
(*a)++;
}
void main()
{
int a=5;
modify(&a);
printf("%d",a);
}
程序的執行結果當然是6,因為你傳遞的是a的地址,所以modify函數都是對a地址上面的內容進行操作,用指針作為函數參數的時候,在參數傳遞的時候其實也是另外開辟了一個存儲空間,然后把指針的值復制過去,然后函數對新開辟的這個存儲空間里面的這個指針變量進行操作。
什么時候用指針,什么時候用普通的拷貝的方式傳遞參數,當傳遞的參數是一個結構體,而這個結構體比較大,這個時候最好用指針,如果用拷貝的話,單單花在拷貝的時間就要浪費很多,