指针数组做函数参数
#define STUDENTS 5#define SUBJECTS 4
#include<stdio.h>
#include<string.h>
void get_list(char *string[],int array[][SUBJECTS+1],int m,int n);
void get_sum(int array[][SUBJECTS+1],int m,int n);
void get_rank_list(char *string[],int array[][SUBJECTS+1],int m,int n);
void print_list(char *string[],int array[][SUBJECTS+1],int m,int n);
void swap_int(int *p,int *q);
void swap_string(char s1[],char s2[]);
void main()
{
char name[STUDENTS][20];
int marks[STUDENTS][SUBJECTS+1];
printf("Input students names & their marks in four subjects\n");
get_list(name,marks,STUDENTS,SUBJECTS);
get_sum(marks,STUDENTS,SUBJECTS+1);
printf("\n");
print_list(name,marks,STUDENTS,SUBJECTS+1);
get_rank_list(name,marks,STUDENTS,SUBJECTS+1);
printf("\nRanked List\n\n");
print_list(name,marks,STUDENTS,SUBJECTS+1);
}
void get_list(char *string[],int array[][SUBJECTS+1],int m,int n)
{
int i,j,(*rowptr)[SUBJECTS+1]=array;
for(i=0;i<m;i++)
{
scanf("%s",string[i]);
for(j=0;j<SUBJECTS;j++)
scanf("%d",&(*(rowptr+i))[j]);
}
}
void get_sum(int array[][SUBJECTS+1],int m,int n)
{
int i,j,(*rowptr)[SUBJECTS+1]=array;
for(i=0;i<m;i++)
{
(*(rowptr+1))[n-1]=0;
for(j=0;j<SUBJECTS;j++)
(*(rowptr+i))[n-1]+=(*(rowptr+1))[j];
}
}
void get_rank_list(char *string[],
int array[][SUBJECTS+1],
int m,
int n)
{
int i,j ,k,(*rowptr)[SUBJECTS+1]=array;
char*temp;
for(i=1;i<=m-1;i++)
for(j=1;j<=m-i;j++)
if((*(rowptr+j-1))[n-1]<(*(rowptr+j))[n-1])
{
swap_string(string[j-1],string[j]);
for(k=0;k<n;k++)
swap_int(&(*(rowptr+j-1))[k],&(*(rowptr+j))[k]);
}
}
void print_list(char *string[],
int array[][SUBJECTS+1],
int m,
int n)
{
int i,j,(*rowptr)[SUBJECTS+1]=array;
for(i=0;i<m;i++)
{
printf("%-20s",string[i]);
for(j=0;j<n;j++)
printf("%5d",(*(rowptr+i))[j]);
printf("\n");
}
}
void swap_int(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
void swap_string(char s1[],char s2[])
{
char swaparea[256];
int i;
for(i=0;i<256;i++)
swaparea[i]='\0';
i=0;
while(s1[i]!='\0'&&i<256)
{
swaparea[i]=s1[i];
i++;
}
i=0;
while(s2[i]!='\0'&&i<256)
{
s1[i]=s2[i];
s1[++i]='\0';
}
i=0;
while(swaparea[i]!='\0')
{
s2[i]=swaparea[i];
s2[++i]='\0';
}
}
为什么出来F:\USER_PHZ\kaoshi.cpp(19) : error C2664: 'get_list' : cannot convert parameter 1 from 'char [5][20]' to 'char *[]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\USER_PHZ\kaoshi.cpp(22) : error C2664: 'print_list' : cannot convert parameter 1 from 'char [5][20]' to 'char *[]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\USER_PHZ\kaoshi.cpp(23) : error C2664: 'get_rank_list' : cannot convert parameter 1 from 'char [5][20]' to 'char *[]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\USER_PHZ\kaoshi.cpp(25) : error C2664: 'print_list' : cannot convert parameter 1 from 'char [5][20]' to 'char *[]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.对于指针数组做函数参数我现在看的书讲的不怎么样,哪位高手能解决下