Re: [問題] 關於C++的基本問題

看板Programming作者時間18年前 (2007/10/11 21:32), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串3/12 (看更多)
※ 引述《may1212.bbs@ptt.cc (郁英)》之銘言: > 我是程式新手, 目前看書時, 有幾點讓我感到疑惑, 想請教各位 > 1. 函式的宣告跟定義 > 書上說函式原型就是指函式的定義, 如 > int Add1(int, int); 這個是簡略寫法 因為你不需要知道變數名稱 只需要知道型態即可 當然 你要寫的跟定義一樣也是可以的 > 可是我一直認為這是函式的宣告, 就跟變數的宣告跟定義一樣, 如 > int aa; //變數的宣告 > aa = 6; //變數的定義 > 我認為的函式的定義是, 如 > int Add1(int x, int y) > { > ... > } 這裡是函式本體定義 裡面會用到參數 所以要寫出名稱來 > 這樣想是錯在哪裡, 請教大家. > 2. 指標變數的記憶體長度 > 我觀念裡是認為指標變數是存放記憶體位址的, 所以長度應該是一樣的, > 如 > int v1 = 100; > char c1 = 'P'; > int *p1 = &v1; > char *p2 = &c1; > 書上是寫*p1所佔用的記憶體長度為4 Bytes, *p2所佔用的記憶體長度 > 為1 Byte > 我認為指標變數佔用的記憶體長度, 只要能指到最大記憶體的容量就好, > 我觀念哪裡錯了. 不確定是你看錯 還是真的書寫錯 *p1 為int型態 應該是兩個bytes *p2是char型態應該是1 byte 要注意 p1, p2 為指標 都是四個bytes 有加*代表是指標指向的東西 > 3. 指向指標陣列的指標變數 > 書上例子, > 01 int i, a1[4] = {10, 20,30 ,40}; > 02 int *p1[4]; > 03 int **p2 = &p1[4]; 這範例好像不太對喔 怎麼會取第四號元素的位置呢 應該最多只能取到第三號 > 04 > 05 for(i=0; i<4; i++) > 06 p1[i] = &al[i]; > 07 > 08 for(i=0; i<4; i++) > 09 cout<<"*p1["<<i<<"]的值="<<*p1[i]<<endl; > 10 > 11 for(i=0; i<4; i++) > 12 cout<<"**pl["<<i<<"]的值="<<**(pl+i)<<endl; > Q1. *p1[i] == **(p1+i) ?? > 如果一樣, 那**(p1+i)好像是多餘的, 真正的用意是什麼 > Q2. 第3行**p2是指向指標陣列的指標變數, 可是這個例子看不出他的用法, > mark掉, compile又過不了, 那他在這個例子的用處是什麼 > 麻煩幫我解疑, 謝謝大家. 範例程式看起來怪怪的喔 是不是有打錯 -- 我的程式設計網誌 http://blog.yam.com/swwuyam -- 夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子 之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下 矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以 喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天 61.57.152.222

10/11 21:45, , 1F
你的觀念有點錯..
10/11 21:45, 1F

10/12 03:50, , 2F
簡略寫法 O_o
10/12 03:50, 2F

10/12 11:39, , 3F
謝謝s大的回答
10/12 11:39, 3F
文章代碼(AID): #173YNJ00 (Programming)
文章代碼(AID): #173YNJ00 (Programming)