关于.c与.cpp的问题

来源:百度知道 编辑:UC知道 时间:2024/06/12 04:31:57
我是一个初学者 有些问题还不是很明白 下面是我在网上看到的代码
#include"stdio.h"
#include"malloc.h" //用了malloc函数,但是没有对其进行文件包含
#define LIST_INIT_SIZE 100
#define OK 1 //你返回了OK值,我们要先预定义
#define ERROR 0
typedef int status; //指定用status代表int类型
typedef struct {
int *elem;
int listsize;
}Sqlist;
status InitList_Sq(Sqlist &L) /*这里用到了C++里面的应用参数,就是说参数L传到函数里面如果值改变了的话,主函数里面L的值也会改变*/
{//创建一个新的线性表
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) return ERROR;
L.listsize=LIST_INIT_SIZE;
return OK;
}
void main()
{
Sqlist L;
InitList_Sq(L);
}
用vc运行 如果文件后缀是.c的话便会显示有错误 如果用.cpp的话便可以正常运行 我想知道这是怎么回事 如果想让上面的代码能够在后缀为.c的情况下运行 应如何修改

c是没有引用的,只能用指针
不过你可以这样改一下
status InitList_Sq(Sqlist *L) /*改成地址传递参数*/
{//创建一个新的线性表
L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));/*相应下面L都要改成指针调用 就是原来的.改成->*/
if(!L->elem) return ERROR;
L->listsize=LIST_INIT_SIZE;
return OK;
}
void main()
{
Sqlist L;
InitList_Sq(&L); /*这里就要改成传地址*/
}

用c的话,编译器是针对c语言的,
如果用cpp的话,针对的是c++的

c没有引用,可以把引用改成指针调用的方式,手机上不能帮你改代码