二维数组调用

程序设计测试4-2 本程序的main函数定义了一个用二维数组m表示的4×4方阵。程序中:调用setMatrix函数,对方阵元素赋不大于100的随机整数;调用diagonal函数,依次把m阵的主对角线、次对角线放在数组a中。程序的运行效果如图所示。请补充定义setMatrix函数和diagonal函数,使其成为完整程序。 程序运行效果//程序测试4-2#include<iostream>#include <cstdlib>#include<ctime>using namespace std;const int N=4;int main(){ int m[N][N],a[2*N],i,j; setMatrix( m, N*N ); //调用函数,对方阵元素赋不大于100的随机整数 cout<<N<<"*"<<N<<"方阵:\n"; for( i=0; i<N; i++ ) //输出方阵元素 { for(j=0;j<N; j++) cout<<m[i][j]<<" "; cout<<endl; } diagonal( m, a, N ); //调用函数,依次把m阵的主对角线、次对角线放在数组a中 cout<<"对角线元素:\n"; for( i=0; i<2*N; i++ ) //输出对角线元素 cout<<a[i]<<" "; cout<<endl;} 这个怎么调用m[][]啊?

多维数组的访问,(用二维指针接收二维数组名,肯定会出错,至少编译不通过了)你只须传二维数组的第一行元素过去就行了,也就是说把二维数组m[a][b]假设有a行b列,则在调用时,只须将a[0]和二维数组的列数b(也就是第一行的地址)传过去,假设二维数组就是一个a行b列的表格,你传了第一行地址过去了,知道了表格的开始位置了,你就可以以不同的偏移量访问二维数组了,比如你在setMatrix函数中用一个一级指针int* pa,接收main()函数中传过来的m[0],用b接收了二维数组的列数,现在假如你想访问第i行j列的某个元素,就可以用pa+b*i+j访问该元素了!呵呵,希望对您有所帮助!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-11
void setMatrix(int** pMatrix,int nTotal);diagonal(int** pMatrix,int* pArray,int nCount); 函数声明给出,自己去想了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网