/*定义结构体*/
struct book{
char title[20];
int a;
};
//以上的只是定义一个标记为book的结构体模板,编译器并不分配空间
struct book library;//创建结构变量,分配空间
//其中struct是关键字,book是标记,{}里面的是成员,library是标记为book的结构体的结构变量。
struct{
char title[20];
int a;
}library;
//这种办法也是建立结构体的办法,在这个办法里,标记可以取消,但是如果想要多次使用,还是要带上标记。
/*初始化结构体*/
struct book library = {
"a book",
10
};//这种初始化方法,逗号很重要,编译器认逗号,按顺序,最后一个可以不用加逗号。
/*结构数组*/
struct book library[100];//创建结构数组。
library[0].title//使用结构数组里的数据。
/*嵌套结构*/
struct names{
char first[20];
char last[20];
};
struct guy{
struct names handle;//这个行是创建嵌套结构
char favfood[20];
char job[20];
folat income;
};
struct guy fellow = {
{"Ewen","Villard"}//初始化嵌套结构的数据,用或括号
…………
};
fellow.names.first//访问嵌套结构中的数据
/*结构指针*/
struct guy *p; //创建一个book类型的结构体指针。
p = &fellow; //p指向变量library。要有取址符。结构变量名不是地址,所以需要取地址符。
p->job; //通过指针的方式访问内容。1
(*p).job; //通过指针的方式访问内容。2
p->handle.first //访问嵌套结构体内的数据。
/*像函数传递结构信息*/
double s(double x,double y)//定义一个函数
s(book.value,book.savefund)//向函数传递结构成员。传递结构信息1
double s(const struct funds *money)//定义一个调用结构体指针的函数
s(&结构体变量名)//调用函数。传递结构信息2
(*money).结构体内的数据名 //因为money是指针,所以不能指点.使用,或者也可以用money->这种方法 这种是对结构体原始数据进行操作
double s(struct funds money)//定义一个调用结构体指针的函数
s(结构体变量名)//调用函数。传递结构信息3
money.结构体内的数据名 //因为传递的是结构体,所以可以直接.使用。 这种是对结构体的副本进行操作,并不影响原始数据。
strlen(字符串或者数组或者变量) //返回这个字符串的长度
11.30简单知识,结构体
最新推荐文章于 2024-09-15 17:25:08 发布