c++MFC 数组做参数

自己定义一个函数voidCInspectView::AddListControl(tag_Almm_tagAlm,CStringstrDisLast[],intnPlcI... 自己定义一个函数void CInspectView::AddListControl(tag_Alm m_tagAlm,CString strDisLast[],int nPlcIndex),函数中有一个数组参数,这个参数该怎么写,还有在调用这个函数时,这个数组参数该怎么传求指导 展开
 我来答
YaNaKaSa
推荐于2016-06-16 · TA获得超过114个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:84.3万
展开全部
数组在传参数时自动退化成指针,并且数组大小不再有意义。
所以对于一位数组只需要定义对应的指针参数即可,但无法得到数组大小,可以通过定义全局量或者传递数组大小使函数获取其大小。
如 Type TypeArray[10];
可定义的函数参数为
ReturnType FunctionName(Type* pType , size_t size/*other arguments*/ );
或者 ReturnType FunctionName(Type TypeArray[] , size_t size/*other arguments*/ );
或者 ReturnType FunctionName(Type TypeArray[1] , size_t size/*other arguments*/ );
上面这些形式等价,即使形参列表中定义的数组有大小,但并无意义,编译器不会理会。
如果是引用,必须为
ReturnType FunctionName(Type (&TypeArray)[10]/*other arguments*/ );

对于二位数组,编译器需要知道第二维的大小,
Type TypeArray[10][10];
可定义的函数参数为
ReturnType FunctionName(Type (*pType)[10] , size_t size /*other argument*/);
或者 ReturnType FunctionName(Type TypeArray[][10] , size_t size/*other arguments*/ );
或者 ReturnType FunctionName(Type TypeArray[1][10] , size_t size/*other arguments*/ );
注意下面的形式是错误的:
ReturnType FunctionName(Type** pType , size_t size/*other arguments*/);
ReturnType FunctionName(Type* pType[10] , size_t size/*other arguments*/ );
这两种形式的参数编译后都是Type**类型
同样引用必须为
ReturnType FunctionName(Type (&TypeArray)[10][10]/*other arguments*/);
对于三维或者更高维数组高于第一维的大小必须指定,
如果对一位数组名取地址,形参需要按照二维处理,二维取地址按三维,其他类推。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式