最近學了指標後,看到*跟&就會覺得是取**(內容)跟取(位址)**#include <stdio.h>
若位照下面的程式來說的話,他的*跟&是我所想的沒錯嗎?
這一題是在講指標跟函數之間的關係,也講到了Call by value跟Call by reference,
請問,下圖程式內,那裡有講到這兩個部份了??雖然我答案有弄出來,但是觀念上不是很懂!
#include <stdlib.h>
change(x,y)
int *x,*y;{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int main(int argc, char *argv[])
{
int m=3,n=4;
printf("m=%d n=%d \n\n",m,n);
printf("m=%d n=%d \n\n",m,n);
change(&m,&n);
printf("m=%d n=%d \n",m,n);
system("PAUSE");
return 0;
}
Call by value
嚴格說起來,C只提供call by value,
因為指標就是整數變數,
16位元的指標是16位元的整數變數,
32位元的指標是32位元的整數變數,
64位元的指標是64位元的整數變數,
傳指標只是傳一個整數過去而已,嚴格說起來,也只是call by value。
以上只是我個人的一種想法而已,不代表教科書立場。