[問題] 關於C++的基本問題
我是程式新手, 目前看書時, 有幾點讓我感到疑惑, 想請教各位
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
10/11 17:04, 1F
推
10/11 17:07, , 2F
10/11 17:07, 2F
→
10/11 17:09, , 3F
10/11 17:09, 3F
推
10/11 23:04, , 4F
10/11 23:04, 4F
推
10/12 01:13, , 5F
10/12 01:13, 5F
→
10/12 11:06, , 6F
10/12 11:06, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 12 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章