我理解的陣列名等于首元素的地址,我會第一反應寫成這樣
int odd[] = { 1,3,5,7,9 };
int even[] = { 0,2,4,6,8 };
decltype(odd) *arrPtr(int i) {
return (i % 2) ? odd : even;
}
但是正確的是這樣的,odd與even前面加了取地址符號
int odd[] = { 1,3,5,7,9 };
int even[] = { 0,2,4,6,8 };
decltype(odd) *arrPtr(int i) {
return (i % 2) ? &odd : &even;
}
我為什么會這樣寫,哪里的知識不夠,希望前輩們不吝賜教,多謝了
uj5u.com熱心網友回復:
個人認為兩個都是對的,個人一般寫成上面的形式;另外,建議樓主看一下arrPtr的接收資料的型別,陣列名是地址,odd可以直接賦值給int *的指標。比如:int *p = odd;
這樣賦值是沒問題。如果int *p = &odd;這樣,編譯器會有告警:型別不匹配;int (*p)[5] = &odd;這樣也是沒問題,
uj5u.com熱心網友回復:
decltype(odd)本身就是指標型別,如果你寫成下面這樣就沒問題。
int * arrPtr(int I){
return (i % 2) ? odd : even;
}
uj5u.com熱心網友回復:
已陣列名回傳值的時候,回傳的是整個陣列的地址,加了取址符號后的是一個元素的地址~比如列印sizof(add)結果是20。但是sizeof(&add)就是4。是不是這樣的…………uj5u.com熱心網友回復:
https://blog.csdn.net/yaoyuantk/article/details/2031635?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase可以看下這篇博客。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214397.html
標籤:C++ 語言
上一篇:求教,這個連等式該如何理解?
下一篇:080_貪吃蛇
