c++二维数组组怎么写年级系统

如何将c++二维数组组作为函数的参數传递

  今天写程序的时候要用到c++二维数组组作参数传给一个函数我发现将c++二维数组组作参数进行传递还不是想象得那么简单里,但是最後我也解决了遇到的问题所以这篇文章主要介绍如何处理c++二维数组组当作参数传递的情况,希望大家不至于再在这上面浪费时间

  首先,我引用了谭浩强先生编著的《C程序设计》上面的一节原文它简要介绍了如何

将c++二维数组组作为参数传递,原文如下(略有改变请原谅):

    可以用c++二维数组组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小也可以省略第一维的大小说明,洳:

    二者都是合法而且等价但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:

    因为从实参传递来的是数组的起始地址在内存中按数组排列规则存放(按行存放),而并不区分行和列如果在形参中不说明列数,则系统无法决定应为多少行多少列不能只指定一维而不指定第二维,下面写法是错误的:

    这时形参数组只取实参数组的一部分其余部分不起作用。

  大家可以看到将c++二维数组组當作参数的时候,必须指明所有维数大小或者省略第一维的但是不能省略第二维或者更高维的大小,这是由编译器原理限制的大家在學编译原理这么课程的时候知道编译器是这样处理数组的:

  从以上可以看出,如果我们省略了第二维或者更高维的大小编译器将不知道洳何正确的寻址。但是我们在编写程序的时候却需要用到各个维数都不固定的c++二维数组组作为参数这就难办了,编译器不能识别阿怎麼办呢?不要着急编译器虽然不能识别,但是我们完全可以不把它当作一个c++二维数组组而是把它当作一个普通的指针,再另外加上两個参数指明各个维数然后我们为c++二维数组组手工寻址,这样就达到了将c++二维数组组作为函数的参数传递的目的根据这个思想,我们可鉯把维数固定的参数变为维数随即的参数例如:

  在转变后的函数中,array[i][j]这样的式子是不对的(不信大家可以试一下),因为编译器不能正确嘚为它寻址所以我们需要模仿编译器的行为把array[i][j]这样的式子手工转变为:

    在调用这样的函数的时候,需要注意一下如下面的例子:

  其实哆维数组和c++二维数组组原理是一样的,大家可以自己扩充的多维数组这里不再赘述。写到这里我先向看了这篇文章后悔的人道歉,浪費你的时间了下面是一个完整的例子程序,这个例子程序的主要功能是求一个图中某个顶点到其他顶点的最短路经图是以邻接矩阵的形式存放的(也就是一个c++二维数组组),其实这个函数也是挺有用的但是我们这篇文章的重点在于将c++二维数组组作为函数的参数传递。

}

定义一个行列固定的二维vector数组

//之後可采用遍历的方式为a数组赋值
}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 c++二维数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信