为何用c的规范写了个程序源代码后缀为.c结果不能通过编译,换成.cpp后却编译通过了?(VS2012编译器)
为什么用c的规范写了个程序源代码后缀为.c结果不能通过编译,换成.cpp后却编译通过了??(VS2012编译器)
RT,明明是使用c的规范写的程序为什么只有源代码文件后缀改为.cpp才能通过编译(.c后缀会提示error)???求高手解释...
代码如下:
------解决方案--------------------
第二十五行
void Stu_input(Student_type &dat)
传参数不能加&,c语言不支持引用
------解决方案--------------------
void Stu_input(Student_type &dat)
改为
void Stu_input(Student_type* dat)
里面改为->
for(i=0;i<stunum;++i)
{
Stu_input(*(data+i));
}
for(i=0;i<stunum;++i)
{
Stu_print(*(data+i));
}
你这两个也有问题 你只malloc了一个data 却去遍历stunum个结构 代码也跑不起来
RT,明明是使用c的规范写的程序为什么只有源代码文件后缀改为.cpp才能通过编译(.c后缀会提示error)???求高手解释...
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char id[5]; // 学生学号
char name[11]; // 学生名字
int age; // 学生年龄
int math; // 数学成绩
int eng; // 英语成绩
int ds; // 数据结构成绩
int os; // 操作系统成绩
}Student_type;
void Stu_print(Student_type print)
{ //按顺序输出数组内各个数据
printf("Student id: %s\n",print.id);
printf("Student name: %s\n",print.name);
printf("Student age: %d\n",print.age);
printf("Student math: %d\n",print.math);
printf("Student eng: %d\n",print.eng);
printf("Student ds: %d\n",print.ds);
printf("Student os: %d\n",print.os);
}
void Stu_input(Student_type &dat)
{
printf("Please input student's id: ");
scanf("%s",dat.id);
printf("Please input student's name: ");
scanf("%s",dat.name);
printf("Please input student's age: ");
scanf("%d",&dat.age);
printf("Please input student's math: ");
scanf("%d",&dat.math);
printf("Please input student's eng: ");
scanf("%d",&dat.eng);
printf("Please input student's ds: ");
scanf("%d",&dat.ds);
printf("Please input student's os: ");
scanf("%d",&dat.os);
}
int main()
{
int i,stunum=0;
Student_type *data;
printf("Input stunum: ");
scanf("%d",&stunum); //记录需要开辟的空间
data=(Student_type *)malloc(stunum*sizeof(Student_type));
for(i=0;i<stunum;++i)
{
Stu_input(*(data+i));
}
for(i=0;i<stunum;++i)
{
Stu_print(*(data+i));
}
free(data);
system("pause");
return 0;
}
编译器
c
------解决方案--------------------
第二十五行
void Stu_input(Student_type &dat)
传参数不能加&,c语言不支持引用
------解决方案--------------------
void Stu_input(Student_type &dat)
改为
void Stu_input(Student_type* dat)
里面改为->
for(i=0;i<stunum;++i)
{
Stu_input(*(data+i));
}
for(i=0;i<stunum;++i)
{
Stu_print(*(data+i));
}
你这两个也有问题 你只malloc了一个data 却去遍历stunum个结构 代码也跑不起来