结构体struct 后面的Student是标签,在main函数中使用的时候 要先Student student2,然后
student.name 这样才可以赋值.
而结构体后面跟着的studnet1,在main函数里可以直接student.name的方式赋值。
如果前面跟了typedef关键字,那么student1就等同于Student了。在面函数需要先定义才可以。
此外,还可以在结构体这里直接赋值
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book = {"C 语言", "RUNOOB", "编程语言", 123456};
用(.)的方式可以访问结构体成员。
结构体也可以作为函数的参数。
结构体指针
使用结构体指针不能直接赋值,如下图所示,这样的方式是错误的。
#include <stdio.h>
struct Student
{
int age;
int num;
};
int main()
{
Student abc;
Student *student;
student->age = 10;
printf("%d", student->age);
return 0;
}
结构体指针不能写成和普通结构体那样的同样的赋值的方法,二者不是一样的。
结构体指针应该这样赋值,结构体指针用 -> 取值。
#include <stdio.h>
struct Student
{
int age;
int num;
};
int main()
{
Student abc;
struct Student* student = &abc;
student->age = 10;
printf("%d", student->age);
return 0;
}
从上图可知,如果用tpedef定义一个结构体的话,后面,必须要加struct,struct后面可加可不加,具体看情况,如果typedef enum 是这种情况的话,在mian函数下面直接定义给值就可以了。