可否再把问题描述清楚一些。
#include <iostream>using namespace std;
int func(int a, int rowlen, int length) {
for (int i=0;i<length;i++) {
printf("%d ", (a+i));
}
printf("\n");
for (int j=0;j<length/rowlen;j++) {
for (int k=0;k<rowlen;k++) {
printf("%d ", a[jrowlen+k]);
}
}
return 0;
}
int main() {
int aa[2][3] = {{1,3,2},{7,6,9}};
printf("result=%d\n", func((int)aa, 3, sizeof(aa)/sizeof(int)));
return 0;
}void get_val(int array[][200], int m, int n, int max, int min)
{
int i, j;
for(max = array[0][0], min= array[0][0], j = 0; j < m; j++){
for(i = 0; i < n; i++){
if(max < array[j][i]){
max = array[j][i];
}
if(min > array[j][i]){
min = array[j][i];
}
}
}
}
int main(int argc, char argv[])
{
int array_test[100][200];
int j, i, max, min;
for(j = 0; j < 100; j++){
for(i = 0; i < 200; i++){
array_test[j][i] = ij;
}
}
get_val(array_test, 100, 200, &max, &min);
printf("max:%d,min:%d\n",max,min);
}
编译通过并通过测试,另外还可以通过指针传递:
void get_val(int array, int m, int n, int max, int min)
{
int i, j;
for(max = array, min= array, j = 0; j < m; j++){
for(i = 0; i < n; i++){
if(max < (array+jn+i)){
max = (array+jn+i);
}
if(min > (array+jn+i)){
min = (array+jn+i);
}
}
}
}
另外,虚机团上产品团购,超级便宜对的,是我的第二种方法。
1可以用指针。
void Func(int array, int m, int n);
在转变后的函数中,array[i][j]这样的式子是不对的(不信,大家可以试一下),因为编译器不能正确的为它寻址,所以我们需要模仿编译器的行为把array[i][j]这样的式子手工转变为:
((int)array + ni + j);
2可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:
void Func(int array[3][10]);
void Func(int array[][10]);
二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:
void Func(int array[][]);
因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多 少列,不能只指定一维而不指定第二维,下面写法是错误的:
void Func(int array[3][]);
实参数组维数可以大于形参数组,例如实参数组定义为:
void Func(int array[3][10]);
而形参数组定义为:
int array[5][10];
这时形参数组只取实参数组的一部分,其余部分不起作用。传地址进去就好int a5;
a就是地址;
#include<stdioh>
void output(int a)
{
int i;
for(i=0;i<5;i++)
{
a[i]=i;
}
}
int main()
{
int a[5],j;
output(a);
for(j=0;j<5;j++)
{
printf("%d",a[j]);
}
}int a[][5];这个只是个指针,不是实体
你在main里顶一个数组就好了
int a[5][5];
用这种Input_sz(a);调用
你主函数中少分号。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)