作者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
1F:推 clifflu:2: p2 与 *p2 是不同的东西喔 ^^; 140.112.61.82 10/11 17:04
2F:推 vvana:用哪本书,中文书吧..指标在32位元就是4Byte 218.165.174.25 10/11 17:07
3F:→ vvana:中文书内容笑笑就好,你1,2都没有错 218.165.174.25 10/11 17:09
4F:推 freesamael:难道是松刚XD 220.135.82.153 10/11 23:04
5F:推 sunneo:知道为什麽compile不过吗 =3=..因为'1' 'l'220.132.228.138 10/12 01:13
6F:→ may1212:感谢以上大大的说明 60.248.103.227 10/12 11:06