看板Programming
标 题Re: [问题] 关於C++的基本问题
发信站无名小站 (Thu Oct 11 21:28:58 2007)
转信站ptt!ctu-reader!ctu-gate!ctu-peer!news.nctu!csnews.cs.nctu!news.cs.nctu
※ 引述《[email protected] (郁英)》之铭言:
> 我是程式新手, 目前看书时, 有几点让我感到疑惑, 想请教各位
> 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海
1F:推 sunneo:你的观念有点错..220.132.228.138 10/11 21:45
2F:推 godfat:简略写法 O_o 220.132.59.20 10/12 03:50
3F:推 may1212:谢谢s大的回答 60.248.103.227 10/12 11:39