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

看板Programming作者 (郁英)時間18年前 (2007/10/11 16:57), 編輯推噓4(402)
留言6則, 5人參與, 最新討論串1/12 (看更多)
我是程式新手, 目前看書時, 有幾點讓我感到疑惑, 想請教各位 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 我認為指標變數佔用的記憶體長度, 只要能指到最大記憶體的容量就好, 我觀念哪裡錯了. 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又過不了, 那他在這個例子的用處是什麼 麻煩幫我解疑, 謝謝大家. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.66.56.235

10/11 17:04, , 1F
2: p2 與 *p2 是不同的東西喔 ^^;
10/11 17:04, 1F

10/11 17:07, , 2F
用哪本書,中文書吧..指標在32位元就是4Byte
10/11 17:07, 2F

10/11 17:09, , 3F
中文書內容笑笑就好,你1,2都沒有錯
10/11 17:09, 3F

10/11 23:04, , 4F
難道是松剛XD
10/11 23:04, 4F

10/12 01:13, , 5F
知道為什麼compile不過嗎 =3=..因為'1' 'l'
10/12 01:13, 5F

10/12 11:06, , 6F
感謝以上大大的說明
10/12 11:06, 6F
文章代碼(AID): #173UMF27 (Programming)
討論串 (同標題文章)
文章代碼(AID): #173UMF27 (Programming)