不管是什麼程式語言,變數名稱或函數名稱本質上只是一個reference,指向記憶體中的某個位址
例子1:
C語言裡
int x = 1;
int y = 2;
x = y;
執行x = 1時,C會在記憶體裡分配空間,存入1,然後讓x成為指向該記憶體位址的reference
執行y=2的過程也一樣。
至於x = y為什麼在C裡面不是解釋成"讓x指向y所指向的地方"呢?
那是因為C定義"等於"這個「運算」在兩個int型態的reference上的功能是:將y所指向的位址裡所存的值,複製到x所指向的位址。因此,變數名稱本質上只是一個reference。
例子2:
void func(int x)
printf("%d", x);
C語言會將這個函數的程式碼放入記憶體的某個位址,然後讓"func"這個函數名稱reference到程式碼第一行的記憶體位址。所以函數名稱本質上也只是個reference
沒有留言:
張貼留言