1. 程式人生 > 其它 >c指標深入理解--指標和函式

c指標深入理解--指標和函式

一、程式的棧和堆:

  堆:

    -》棧

      -》程式棧

        -》棧幀(組織)

          -》函式返回地址

          -》區域性資料儲存

          -》引數儲存

          -》棧指標和基指標

            1)棧指標:通常指向棧頂部

            2)基指標:通常指向幀棧內部地址,比如函式返回地址、陣列

    -》?動態堆(自定義申請)

二、通過指標傳遞和返回資料:

    -》傳遞資料:

      1)指標傳遞

        void swapWithPointers(int* pnum1, int* pnum2) {

          int tmp;
          tmp = *pnum1;
          *pnum1 = *pnum2;
          *pnum2 = tmp;
        }
        下面的程式碼段說明了這個函式的用法:
        int main() {
          int n1 = 5;
          int n2 = 10;
          swapWithPointers(&n1, &n2);
          return 0;
        }

      2)數值傳遞:(普通傳參方式)

      3)傳遞指向常量的指標:(這種方式效率很高,因為只傳了資料的地址,能避免某些情況下複製大量記憶體)

    -》返回資料:

三、函式指標:

  概念區別:

    函式指標:強調的是指標,如 int (*fun)()

    指標函式:強調的是函式,如 int *fun()

  -》傳遞函式指標:

  -》返回函式指標: