EE_DSnP 板


LINE

※ 引述《bonoshi (sbo)》之銘言: : Topic5的講義上,第38張slide上的第二點說 : 2. How about: : int *p = new int; : void f(const int* q); : 問:Is f(p) OK? : 答案當然是ok,只要在函式內不要對*q進行修改就行了,可供驗證的程式碼如下 : #include<iostream> : using namespace std; : void f(int const*q); : int main(void){ : int*p=new int; : f(p); : system("pause"); : } : void f(int const*q){ : } : 不過我卻發現一件奇怪的事,如果p是一個double pointer,同樣的語法用下去 : ,就不行了(請看下面) : #include<iostream> : using namespace std; : void f(int const**q); : int main(void){ : int**p=new int*; : *p = new int; : f(p); : system("pause"); : } : void f(int const**q){ : } : compiling error : 按照道理應該要可以執行才對? : 那麼為什麼不可以呢? : 麻煩高手幫忙回答一下 : 謝謝! 就像上課時說的, function call 就是對參數做一個 assignment 的動作. 所以第一個例子: int const* p = int *; // 示意, 當然這樣文法是錯的. 是 OK 的, 因為就是 LHS 收到 copy 下來之後, 就把它當作是 read-only 而已. 但是第二個例子: int const** p = int **; 是不行的, 因為 LHS 是 pointer to a (int const *), 但是 RHS 是 pointer to a (int*). 不同型態的 pointer 是不能互相 assign 的 (void * on the LHS 例外) FYI, 但是如果 f() 改成: void f(int *const *p) { } 就可以了! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.126.186.119
1F:推 bonoshi:其實問這個的緣起,是因為這次作業我將一個double pointer 11/10 21:19
2F:→ bonoshi:傳入函式,假設那個double pointer是a,因為**a直接指到了 11/10 21:19
3F:→ bonoshi:矩陣裡面的「元」,因此,我希望**a在傳入函式時,被限定 11/10 21:20
4F:→ bonoshi:**a不能被修改,才試出了這樣的問題… 11/10 21:21
5F:推 bonoshi:對了,我想向老師確定一下(int const *)意思是不是 11/10 21:28
6F:→ bonoshi:(改一下)我想確定一下老師上面說(int const *)意思是不 11/10 21:29
7F:→ bonoshi:是pointer to int const 11/10 21:29
8F:→ ric2k1:yes. 11/10 22:43
9F:推 wintercobra:不懂,最後改成void f(int *const *p){},那個const 11/10 23:42
10F:→ wintercobra:為什麼加在那個位置?如果要p指向一個(int const *), 11/10 23:43
11F:→ wintercobra:為什麼不是void f(int const* *p){}? 11/10 23:43
12F:推 bonoshi:int *const *p的意思是 11/10 23:47
13F:→ bonoshi:p is a pointer to a constant pointer to an integer 11/10 23:47
14F:→ bonoshi:下一篇我分享我八點多時做的兩個測試,雖然有點偏了… 11/10 23:49
15F:→ ric2k1:To wintercobra, please see post 1571 bonoshi's test 11/11 02:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP