Dec-C++编译报错
错误信息: [Linker error] undefined reference to `createDateList(int (*) [3], int&)'
createDateList(int (*) [3], int&)是自己定义的方法
具体代码如下
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define lower 0
#define higher 1
void getNearestDate(int (*date)[3],int num);
void createDateList(int (*date)[3],int &num);
int DateCompare(int date1[3],int date2[3],int minDiffer[3]);
int main(){
int (*date)[3];
int num;//记录学生人数
createDateList(date,num);
getNearestDate(date,num);
}
void createDateList(int (*date)[3],int num){
int i,j=0;
char *s;
char *p;
printf("请输入学生数目:");
scanf("%d",&num);
date=new int[num][3];//动态申请二维数组空间
printf("请输入学生们的生日,格式例如:81-01-30");
for(i=0;i<num;i++){
scanf("%d-%d-%d",date[i][0],date[i][1],date[i][2]);
}
}
void getNearestDate(int (*date)[3],int num){
int i,j;
int minDays;
int nearestDate[2][3];
int min[3]={2,0,0};//由于都是80-81年出生的,所有任何两个学生之间相差的年数小于2
for(i=0;i<num;i++){
for(j=i+1;j<num;j++){
if(DateCompare(date[i],date[j],min)==lower){
nearestDate[0][0]=date[i][0];
nearestDate[0][1]=date[i][1];
nearestDate[0][2]=date[i][2];
nearestDate[1][0]=date[j][0];
nearestDate[1][1]=date[j][1];
nearestDate[1][2]=date[j][2];
min[0]=abs(date[i][0]-date[j][0]);
min[1]=abs(date[i][1]-date[j][1]);
min[2]=abs(date[i][2]-date[j][2]);
}
}
}
minDays=min[0]*360+min[1]*30+min[2];
printf("生日相差最小的两个人的生日为:\n");
printf("%2d-%2d-%2d\n",nearestDate[0][0],nearestDate[0][1],nearestDate[0][2]);
printf("%2d-%2d-%2d\n",nearestDate[1][0],nearestDate[1][1],nearestDate[1][2]);
system("pause");
}
int DateCompare(int date1[3],int date2[3],int minDiffer[3]){
if(abs(date1[0]-date2[0])<minDiffer[0]){
return lower;
}
else if(abs(date1[0]-date2[0])>minDiffer[0]){
return higher;
}
else if(abs(date1[1]-date2[1])<minDiffer[1]){
return lower;
}
else if(abs(date1[1]-date2[1])>minDiffer[1]){
return higher;
}
else if(abs(date1[2]-date2[2])<minDiffer[2]){
return lower;
}
else{
return higher;
}
}
[解决办法]
void createDateList(int (*date)[3],int &num){//此函数应该这样定义
int main(){
int (*date)[3];
date=NULL;//初始化
int num=0;//C++不允许直接使用未初始化变量,养成好习惯
createDateList(date,num);
getNearestDate(date,num);
}
暂时先指出这点问题,其他的问题自己再改改吧。void createDateList(int (*date)[3],int &num){//此函数应该这样定义
是这样子的,改成这样那个问题就消失了,,,,不过想问一下为什么这样子定义。。。。