像下面这样的数组在函数中如哬传参?也就是说如何保证虚参与实参类型一致
我们给出完整的测试程序:
这两种数组的正确赋值应该如下:
当然,如果不是传参的话在main()函数中就不会发生这么多烦恼了。
这说明了一点在没传参之前,main()函数清楚它们都是二维数组如何转化为一维数组对于上面给出的兩种函数原型:
上面只是抛出了一个问题,我在这里的主题是想搞清楚二维数组如何转化为一维数组传参有什么奥秘而非只针对这一个問题提出解决方法。
我们先看看教材上怎么讲这一块的,
谭浩强的《C程序设计》二维数组如何转化为一维数组作為参数传递原文如下(略有改变,请原谅):
因为从实参传递来的是数组的起始地址在内存中按数组排列规则存放(按行存放),而并不区分荇和列如果在形参中不说明列数,则系统无法决定应为多少行多少列不能只指定一维而不指定第二维,下面写法是错误的:
虽然从本質上讲int array[3][4] 的数组名相当于二级指针但它不等同于一般的二级指针,因为它还含有数组相关的信息所以在main函数中:
它可以通过下标,每次跳过10个字节来寻址我们再看看编译器是怎样处理数组的:
pfBuffer;来释放.你传递这个float指针,传递行列数之后,你如果要访问y行x列的话,只要算一下它在哪儿, int addr = y*W+x;就是其"地址"了,你要访问它,直接使用pfBuffer[addr]就OK了,实际上我做图象处理的时候全部这样做,因为这样的地址访问很明了,不会给阅读带来不便,而且作為大部分的时候,我们用矩阵比较多,列数不等的情况很少。这只是个人见解
你可以在二维数组如何转化为一維数组中的值用array_unique()即可。
下载百度知道APP抢鲜体验
使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。