加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【编程细节】函数形参为二维数组或指针时,如何调用

(2013-10-14 20:31:09)
标签:

it

分类: C.plusplus
先推荐一首俏皮的歌:
孩子的烦恼  英格玛 http://play.baidu.com/?__m=mboxCtrl.playSong&__a=1070464&__o=/song/1070464||playBtn&fr=altg3||www.baidu.com#loaded

编程笔记:

【1】

// 原始函数 

int fun1(int n, double *A, double *evec, double *eval);

// 封装函数

template void fun2(double M[n][n],double evec[n][n],double ev[n]) 

{     

fun1(n,M[0],evec[0],ev); 

}

main()函数调用方法:

double n_M[4][4],evec[4][4],ev[4];

fun2<4>(n_M,evec,ev);


【2】

double m_s; // 成员变量;

double m_R[3][3]; double m_T[3];

void absoluteOrientation_drive( double& S, double R[3][3] ,double T[3] ) 

{         

... 

S=abs.m_s; 

memcpy(R,(abs.m_R),sizeof(double)*9);

        memcpy(T, (abs.m_T),sizeof(double)*3);

    ...

}


参考资料:

一、先说说数组名,数组名代表数组第一个元素的指针。

    对一维数组,数组名就代表首元素地址;对二维数组,因其元素是数组,所以数组名代表首个行地址。

    对二维数组a[M][N],区分下a和a[0]: a代表首个行地址,它的每个元素都是一个行数组,因此,它的指针移动单位是"行".使用a[0]是把二维数组看做一个一维数组来处理,即它的元素不再是行,而是单个数组元素。所以它指向的是数组的首个元素,它的指针移动单位是"单个数组元素".

    ……

(参考资料原文:C++二维数组和指针的关系 http://www.softfz.com/czx/5981/


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有