主题:一个关于指针型函数的问题
#include<string.h>
#include<stdio.h>
#define N 3
#define M 4
void input_stu(int score[N][M],char no[N][15]){
//输入学生的学号,每门课的成绩,并求总分
int i,j,s;
for(i=0;i<N;i++){
printf("input no[%d]-----score",i);
s=0;scanf("%s",no[i]);
for(j=0;j<M-1;j++){
scanf("%d",&score[i][j]);
s=s+score[i][j];}
score[i][M-1]=s;
}
}
int *search(int score[N][M],char no[N][15],char num[15]){
//根据学号确定该学生成绩的存放位置
int (*p)[M];int i;int r=0;
int *p;
p=&score[0];
for(i=0;i<N;i++)
if(strcmp(no[i],num)==0){
p=p+r;break;}
else r+=1;
return p;
}
void main(){
int score[N][M];
char no[N][15];
char num[15];
int i,*q;
void input_stu(int score[N][M],char no[N][15]);
int *search(int score[N][M],char no[N][15],char num[15]);
input_stu(score,no);
printf("input num:");
scanf("%s",num);
q=search(score,no,num);
printf("\n%s-----",num);
for(i=0;i<M;i++)
printf("%d ",*(q+i));
}
这段代码在VS上编译出错,search函数return p这里的p与函数类型不匹配,但该函数明明是返回指针的函数,想请教大虾,问题出在哪里?谢谢!下面还有错误代码:
1> d:\microsoft visual studio 10.0\vc\include\stdio.h(304) : 参见“scanf”的声明1>f:\study\cppfiles\helloworld\helloworld\main.cpp(11): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\microsoft visual studio 10.0\vc\include\stdio.h(304) : 参见“scanf”的声明
1>f:\study\cppfiles\helloworld\helloworld\main.cpp(23): error C2440: “return”: 无法从“int (*)[4]”转换为“int *”
#include<stdio.h>
#define N 3
#define M 4
void input_stu(int score[N][M],char no[N][15]){
//输入学生的学号,每门课的成绩,并求总分
int i,j,s;
for(i=0;i<N;i++){
printf("input no[%d]-----score",i);
s=0;scanf("%s",no[i]);
for(j=0;j<M-1;j++){
scanf("%d",&score[i][j]);
s=s+score[i][j];}
score[i][M-1]=s;
}
}
int *search(int score[N][M],char no[N][15],char num[15]){
//根据学号确定该学生成绩的存放位置
int (*p)[M];int i;int r=0;
int *p;
p=&score[0];
for(i=0;i<N;i++)
if(strcmp(no[i],num)==0){
p=p+r;break;}
else r+=1;
return p;
}
void main(){
int score[N][M];
char no[N][15];
char num[15];
int i,*q;
void input_stu(int score[N][M],char no[N][15]);
int *search(int score[N][M],char no[N][15],char num[15]);
input_stu(score,no);
printf("input num:");
scanf("%s",num);
q=search(score,no,num);
printf("\n%s-----",num);
for(i=0;i<M;i++)
printf("%d ",*(q+i));
}
这段代码在VS上编译出错,search函数return p这里的p与函数类型不匹配,但该函数明明是返回指针的函数,想请教大虾,问题出在哪里?谢谢!下面还有错误代码:
1> d:\microsoft visual studio 10.0\vc\include\stdio.h(304) : 参见“scanf”的声明1>f:\study\cppfiles\helloworld\helloworld\main.cpp(11): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\microsoft visual studio 10.0\vc\include\stdio.h(304) : 参见“scanf”的声明
1>f:\study\cppfiles\helloworld\helloworld\main.cpp(23): error C2440: “return”: 无法从“int (*)[4]”转换为“int *”