計算機概論 - 考試

Table of Contents

[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處

void f(int *p,int a[]) { p=a;} //*(p)=1

void main()
{
int a[]={1,3,5,7};
int *p=&a[1];
f(p,a);
//*(p)=3
p++;
cout<<*(p);
//*(p)=5
}


想法: p不是指標嗎?
為什麼離開 f function 後
p值仍未改? call by value?


考題出處 101年中華電信考題

--

All Comments

Edith avatarEdith2013-06-14
因為Call by value
Daph Bay avatarDaph Bay2013-06-14
會改的狀況是去改變"p指向的內容", 這個副函式是去改p指標
Lydia avatarLydia2013-06-15
就算是指標 也是用傳值的方式將指標本身的內容 這裡是a[1]
Hedda avatarHedda2013-06-18
的位置 傳進去
Kristin avatarKristin2013-06-20
會有類似傳址的效果是當你直接去對記憶體位置操作 也就是對
Connor avatarConnor2013-06-21
p指向的內容*p直接做更改 才看起來像傳址
就我的理解是這樣 不知道有沒有錯
Franklin avatarFranklin2013-06-24
原PO把副程式的p改成q應該就知道了你應該是被那個p誤導了!!
Yedda avatarYedda2013-06-26
感謝解答 看到盲點了