作者neokir (ゆきぽLOVE!)
看板Programming
标题请问函式参数设定时的"指标"及"参照"参数
时间Fri Apr 23 21:44:12 2010
目前在下碰到的问题如下:
一个结构阵列,要把这个阵列的位址传给函式去表示(函式内不改变数值,只负责表示)
用指标传的方式是写得出来
EX:
--------------------------------------
typedef struct NUMBER{
int num;
int count;
}NUM;
NUM list[128];
//函式呼叫
myFunction1(list); //写法1
myFunction2(&list); //写法2
//函式本体
void myFunction1(const NUM* const pList){...} //写法1:直接传第一个元素的位址
void myFunction2(const NUM (*pList)[128]){...} //写法2:传该阵列(含128个元素)
的位址
--------------------------------------
不过由於传指标给函式 = 还是会复制指标变数 = 占一点点空间
所以个人想试着用"参照"的方式,来把位址传给函式
void myFunction3(const NUM* (&rList)){...}
但很遗憾的编译无法成功....
由於个人之前有练习过"指向函式的指标",藉由该练习得知用参照一样可以指向位址
(例: int (*pFunc)(int , int);
int (&rFunc)(int , int); )
加上翻後得知C++中有『*&』的"参照指标的参照(别名)变数"
理论上应该可以传入才对....
请问小弟是在什麽地方出鎚了呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 113.152.83.170
1F:推 loveme00835:先来说说传指标的方式, 编译器会隐含140.121.197.115 04/24 04:46
2F:→ loveme00835:把第一个元素的位址复制进去, 如果是140.121.197.115 04/24 04:47
3F:→ loveme00835:传参考的方式, 参考型态必须跟传进来140.121.197.115 04/24 04:48
4F:→ loveme00835:的一样, 也就是「阵列」型态, 所以程140.121.197.115 04/24 04:48
5F:→ loveme00835:式码应该是长这样 :140.121.197.115 04/24 04:49
6F:→ loveme00835:myFunction(const NUM (&rList)[128])140.121.197.115 04/24 04:52
7F:推 longrider:请问myFunction(const NUM (&rList)[]) 218.162.110.18 04/24 12:55
8F:→ longrider:会不会有不知道阵列数量的问题? 218.162.110.18 04/24 12:55
9F:→ longrider:借本文问问 218.162.110.18 04/24 12:55
10F:→ neokir:↑已试过,会造成无法参照(阵列size问题) 113.152.66.63 04/24 18:59
11F:推 loveme00835:可以overloading来解决阿XD140.121.197.115 04/24 20:50