詳解C 指針( Pointer)( 指針在函數中的應用 )

2020-08-13 20:33:21

C 指針(Pointer)

指針在函數中的運用

先上真理, 估計也還是老師上課講函數時候常重複的那幾句,不過這就是真理:

  • 函數實參的傳遞方式是值傳遞
  • 注意「虛實結合」

值傳遞對於指針在函數中的應用來說,最顯著的優勢就是可以改變實參的值.下面 下麪還是簡單梳理一下. (會重複一些之前的例子)

基礎指針

#include <stdio.h>
//swap-指針作形參從而達到改變實參傳出多個變數的效果
void swap(int * pointer1, int * pointer2){
    int mid;	//必須是int變數而不是 int * 防止對原本的數據破壞
    mid = * pointer2;
    * pointer2 = * pointer1;
    * pointer1 = mid;
}
//void swap( int x, int y ){
//	  int mid;
//	  mid = x;
//	  x = y;
//	  y = mid;
//}	此函數達不到交換兩個數的效果, 遵循呼叫函數」值傳遞「的方式,只改變了形參沒改變a, b.

void swapc (char * a, char * b) {
        char c;
        c = * a;
        * a = * b;
        * b = c;
}
int main(){
    int a, b;
    int * pointer_1, * pointer_2;
    pointer_1 = &a;
    pointer_2 = &b;
    scanf("%d %d",&a, &b);
    swap(pointer_1, pointer_2);
    //直接對記憶體中的值操作, 狠得有效