首页 > 代码库 > 结构体
结构体
#include <stdio.h>
#include <stdlib.h>
//创建结构体:重命名为node_t,指针重命名为p2node_t
typedef struct linknode{
int data;
struct linknode* next;
}node_t,*p2node_t;
struct{
char a[10];
//声明结构体时不能对成员变量初始化
//int i = 0;(/*wrong*/)
int i;
}a1,a2;
//无结构标记的结构体重复声明不被认为是同一个类型
struct{
char a[10];
int i;
}p1,p2;
int main(int argc,const char * argv[]) {
int i = 0;
a1.a[0] =‘a‘;
a2 = a1;
printf("%s\n",a2.a);
//无结构标记的结构体重复声明不被认为是同一个类型所以:
//p1 = a1;(/*wrong*/)
char aa[] = "you are bad";
// aa = "ou";(/*wrong*/)
char ab[12] ="you are bad";
// ab = "ou";(/*wrong*/)
//上面的数组aa/ab数组不能像下面的指针“ac”这样应用,因为数组在创建时指针(aa/ab)的地址
//已经被绑定到被分配的内存地址,所以不可以再变动
char* ac =NULL;
ac = "you are bad";
// ac[0] = ‘o‘;
printf("%s\n",ac);
//结构体数组可以作为小型数据库来使用
//数组array可以作为记录100台电脑的数据库
node_t array[100];
for (i = 0; i<100;i++) {
array[i].data = i;
}
i =0;
while (i!=100) {
printf("%d ",array[i++].data);
}
/*
每个结构体表示一种新的范围,与其它结构体中的成员不会发生冲突,即使两个结构体中的成员“姓名”相同,但他们始终不会干扰到对方。
类似与函数中的局部变量
struct{char a[100]}a1,a2;
a2.a = "you are best!";
a1 = a2;
peintf("%s\n",a1.a);输出为:you are best!
如果再次声明:struct{char a[100]}b1,b2;
那么:a1 = b1(\*wrong*\);
因为它们的类型没有名字(结构标记),所以规定a1和b1不具有同一类型
**/
return 0;
}
结构体