这几天呢。在学习C语言,打算搞明白C的自定义头文件的,可是在运行头文件的时候却发生了错误,于是纠结于那个结构体,我搞了一天多的时间,总算把它搞明白了,下面上代码:
C++:
#include <stdio.h>
typedef struct TelPhone{
char Name[20];
char TelNumber[20];
}iTem;
struct list{
iTem item;
list* next;//直接使用结构体名称
};
typedef struct list List;
void main()
{
int i=0;
iTem *item = new iTem;
printf("你好,尊姓大名呢?\n");
scanf("%s",item->Name);
printf("%s\n",item->Name);
printf("留下联系方式如何,嘻嘻\n");
scanf("%s",item->TelNumber);
printf("%s\n",item->TelNumber);
List *list = new List; //C++可以像其他面向对象语言一样随处声明变量
list->item = *item;
list->next = list; //指向自己
printf("%s\n",(*list).item.Name);
for(;i<20;i++){
(*list).next->item.Name[i]=65+i;
}
(*list).next->item.Name[19]='\0';
printf("%s\n",(*list).next->item.Name);
}
C:
#include <stdio.h>
#include <stdlib.h> //要有这个头文件才能用molloc()函数
typedef struct TelPhone{
char Name[20];
char TelNumber[20];
}iTem;
struct list{
iTem item;
struct list* next;//C的语法比较严格他需要加上struct关键字才能运行正常
//我看的例子就是这个地方坑我的
};
typedef struct list * List;
void main()
{
int i=0;
iTem item ;
List list = (List)malloc(sizeof(List)) ; //必须放在函数前声明,不然报错谁也帮你不了你了...
printf("你好,尊姓大名呢?\n");
scanf("%s",item.Name);
printf("%s\n",item.Name);
printf("留下联系方式如何,嘻嘻\n");
scanf("%s",item.TelNumber);
printf("%s\n",item.TelNumber);
list->item = item;
list->next = list ; //指向自己
printf("%s\n",(*list).item.Name);
for(;i<20;i++)
{
list->next->item.Name[i]=65+i;
}
(*list).next->item.Name[19]='\0';
printf("%s\n",(*list).next->item.Name);
}
可以看到C跟C++的代码是差不多的,做个笔记,嘻嘻