读书人

C语言指针新手求解有关问题

发布时间: 2012-03-26 15:46:56 作者: rapoo

C语言指针新手求解问题
#include "stdio.h"
void main()
{
int findmax(int a[][],int *p1,int *p2);
int a[3][4];
int i,j;
int maxscore,cla,stu;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("请输入%d班第%d个同学的分数:",i,j);
scanf("%d",&a[i][j]);
}
maxscore=findmax(a[i][j],&cla,&stu);
printf("最高分为%d,他是%d班第%d个同学.\n",maxscore,cla,stu);
}
int findmax(int a[][],int *p1,int *p2)
{
int i,j,max;
int x,y;
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{
max=a[i][j];
x=i;
y=j;
}
*p1=x;
*p2=y;
return (max);
}
我用VC编译器,下面提示错误是:error C2087: '<Unknown>' : missing subscript
指的是int findmax(int a[][],int *p1,int *p2) 这句有错。
希望大家能给出指点,初学C语言,不是很专业,求谅解。




[解决办法]
下面是我写的
[code=C/C++][/code]#include <stdio.h>

int findmax(int a[3][4],int *p1,int *p2)//其实也a[3][4]可以换成指针数组
{
int i,j,max;
int x,y;
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{
max=a[i][j];
x=i;
y=j;
}
*p1=x;
*p2=y;
return (max);
}

int main(void)
{
int a[3][4];
int i,j;
int maxscore,cla,stu;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{//这里似乎要加一个括号
printf("请输入%d班第%d个同学的分数:",i,j);
scanf("%d",&a[i][j]);
}//这里也是
}
maxscore=findmax(a,&cla,&stu);
printf("最高分为%d,他是%d班第%d个同学.\n",maxscore,cla,stu);
}
[解决办法]

C/C++ code
#include "stdio.h"void main(){  int findmax(int a[][4],int *p1,int *p2);//二维数组的列数是一定要写的  int a[3][4];  int i,j;  int maxscore,cla,stu;  for(i=0;i<3;i++)  {       for(j=0;j<4;j++)    {        printf("请输入%d班第%d个同学的分数:",i,j);        scanf("%d",&a[i][j]);    }  maxscore=findmax(a,&cla,&stu);  printf("最高分为%d,他是%d班第%d个同学.\n",maxscore,cla,stu);    }  }int findmax(int a[][4],int *p1,int *p2){  int i,j,max;  int x,y;  max=a[0][0];  for(i=0;i<3;i++)for(j=0;j<4;j++)if(max<a[i][j]){       max=a[i][j];      x=i;    y=j;}*p1=x;*p2=y;return (max);}
[解决办法]
仅供参考
C/C++ code
//在堆中开辟一个4×5的二维int数组#include <stdio.h>#include <malloc.h>int **p;int i,j;void main() {    p=(int **)malloc(4*sizeof(int *));    if (NULL==p) return;    for (i=0;i<4;i++) {        p[i]=(int *)malloc(5*sizeof(int));        if (NULL==p[i]) return;    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            p[i][j]=i*5+j;        }    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            printf(" %2d",p[i][j]);        }        printf("\n");    }    for (i=0;i<4;i++) {        free(p[i]);    }    free(p);}//  0  1  2  3  4//  5  6  7  8  9// 10 11 12 13 14// 15 16 17 18 19
[解决办法]
探讨

引用:

引用:
int a[][]
多维数组,只有最后一维可以不指定大小


+1

只有第一维可以不指定大小吧

读书人网 >C++

热点推荐