一、一些注意事项
1.typedef 使用与否区别
typedef struct person
{
char a;
int b;
}person
person p;//不需要struct person p;
struct person
{
char a;
int b;
}
struct person p;//没有使用typedef就需要 struct person p;
2.关于结构体指针
struct person *p;
struct person w;
struct person w1;
p=&w;//将w的地址赋值给p
p->a;//p指向a
w.a;//w的a
*p=w1;//将w1中的内容全部赋值给w
3.在不同文件中引用全局变量
a.c中定义了 int a ,想要在b.c中使用
①在a.h中声明 extern int a; 在b.c中包含头文件 a.h(可以使用,不推荐)
②在b.c中extern int a;(不推荐使用)
③定义一个get_a()函数,(推荐使用)
因此定义变量最好加上 static 修饰
4.在32位处理器中地址都是32位的
在32位处理器中,无论什么类型的指针变量,都是4字节的。
变量可读可写,必定在内存中
5.结构体中定义结构体指针
typedef struct student{
char *name;
int age;
struct student *classmate;//注意classmate是一个指针
}student;
student zhangsan;
student lisi;
zhangsan.classmate=&lisi;//将李四的地址赋值给张三的classmate
zhangsan.classmate->name;//李四的名字
6.链表
typedef struct spy
{
char *name;
struct spy *next;
} spy,*p_spy;
spy A={"A",null};
spy B={"B",null};
spy C={"C",null};
A.next=&B;//A的next存放B的地址
B.next=&C;
p_spy head=&A;//head存放了A的地址
head->next;//head存放了A的next的地址就是B;