作者may1212 (郁英)
看板Programming
標題[問題] 關於C++的基本問題
時間Thu Oct 11 16:57:50 2007
我是程式新手, 目前看書時, 有幾點讓我感到疑惑, 想請教各位
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
推 clifflu:2: p2 與 *p2 是不同的東西喔 ^^; 140.112.61.82 10/11 17:04
推 vvana:用哪本書,中文書吧..指標在32位元就是4Byte 218.165.174.25 10/11 17:07
→ vvana:中文書內容笑笑就好,你1,2都沒有錯 218.165.174.25 10/11 17:09
推 freesamael:難道是松剛XD 220.135.82.153 10/11 23:04
推 sunneo:知道為什麼compile不過嗎 =3=..因為'1' 'l'220.132.228.138 10/12 01:13
→ may1212:感謝以上大大的說明 60.248.103.227 10/12 11:06