c语言问题:主函数中有一个二维数组,调用一个子函数对其赋值,希望通过指针来实现,该怎么做。具体一点

如题所述

第1个回答  2011-04-15
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] = i*j;
}
}

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+j*n+i)){
*max = *(array+j*n+i);
}

if(*min > *(array+j*n+i)){
*min = *(array+j*n+i);
}
}
}
}
另外,虚机团上产品团购,超级便宜
第2个回答  推荐于2016-10-08
#include <stdio.h>
#define ROW 3
#define COL 3

void InitAry(int (*Ptr)[COL]);
void PrintAry(int (*Ptr)[COL]);
void main()
{
int IntAry[ROW][COL];//定义3*3数组
InitAry(IntAry);//初始化二维数组值
PrintAry(IntAry);//打印二维数组值
}

void InitAry(int (*Ptr)[COL])
{
int i,j;
printf("please input the arrray(3*3):\n");
for (i=0;i<ROW;++i)
{
for (j=0;j<COL;++j)
{
scanf("%d",Ptr[i]+j);
}
}
}
void PrintAry(int (*Ptr)[COL])
{
int i,j;
printf("the value of the array is:\n");
for (i=0;i<ROW;++i)
{
for (j=0;j<COL;++j)
{
printf("%d ",Ptr[i][j]);
}
printf("\n");
}
}

LZ最好把功能都封装到函数里面,这样就会很清晰的了本回答被提问者采纳
第3个回答  2011-04-13
//---------------------------------------------------------------------------

#include <stdio.h>

void read(int (*a)[5],int rows) //rows是二维数组的行数
{
int i,j;
for (i = 0; i<rows; i++) {
for (j=0; j<5; j++) {
scanf("%d",a[i]+j);
}
}
}

int main(void)
{
int i,j,a[2][5];
read(a,2);
for (i = 0; i<2; i++) {
for (j=0; j<5; j++) {
printf("%d ",a[i][j]);
}
putchar('\n');
}
return 0;
}
//---------------------------------------------------------------------------
第4个回答  2011-04-13
#include <stdio.h>
#define M 2
#define N 3
void Input(int *a,int num)
{
printf("请输入数据,以回车分隔\n");
for (int i=0; i<num; i++)
{
scanf("%d",&a[i]);
}
}
void OutPut(int *a,int m,int n)
{
printf("\n数据为:\n");
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
printf("%d ",a[i*n+j]);
}
printf("\n");
}
}
void main()
{
int data[M][N];
Input(data[0],M*N);
OutPut(data[0],M,N);
}
第5个回答  2011-04-13
#include "stdio.h"
void fun(int (*p)[3])
{
int i=0,j=0;
int *p1;
for(i=0; i<3; i++)
{
p1 = p[i];
for(j=0; j<3; j++)
{
*p1++ = i*3+j;
}
}
}
void main()
{
int value[3][3],i,j;
fun(value);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf("value[%d][%d]:%d\n",i,j,value[i][j]);
}
相似回答