#include <stdio.h>
int main(int argc, const char * argv[]) {
//第1种,匿名结构体,不需要结构体名,只需要结构体变量,只使用一次。
struct {
char *title;
} someStruct;
someStruct.title = "我是匿名结构体";
printf("%s\n",someStruct.title);
//标准的结构体定义方式(确定结构体的类型)
//第2种 相当于声明了一个 数据类型,类型名称是 Book
struct Book
{
char *title;
float price;
};
//使用的时候比较怪异,必须在类型名前面还要加上一个 struct 关键字。
//需要加上声明关键字 和 类型名称
//就有点类似 java 里 我声明了一个类,class Person 在使用的使用不能 person 而需要 class Person.. (这有一点反直觉)
struct Book book1;
book1.title = "C Primer Plus";
book1.price = 75.50f;
printf("title = %s price = %.2f\n",book1.title,book1.price);
//第3种 ,声明结构体的同时声明结构体变量。
struct Student {
char *name;
float weight;
float height;
} stu1;
stu1.name = "张三";
stu1.weight = 75.5;
stu1.height = 175.50;
printf("姓名 = %s 身高 = %.2f 体重 = %.2f\n",stu1.name,stu1.weight,stu1.height);
//第4种,使用typedef 对已有的结构体类型取别名。
//我们给Student 结构体去别名叫 GoodBoy (这里仍然要加上一个 struct)
typedef struct Student GoodBoy;
GoodBoy boy1 = { .name = "jack",.weight = 88.0,.height = 182.2};
printf("boy1 %s %.2f %.2f\n",boy1.name,boy1.weight,boy1.height);
//第5种,使用typedef 在定义 结构体的时候,不省略结构体原来的名字,取别名
typedef struct Dog {
char *name ;
float weight;
int age;
} Samoyed;
//我们可以使用原来的名字 Dog
struct Dog d1 = {.name = "萨摩耶",.weight = 22.22f,.age = 1};
printf("d1.name = %s d1.weight = %.2f d1.age = %d\n",d1.name,d1.weight,d1.age);
//也可以使用下面定义的别名(使用别名的时候,就可以省略一个struct关键字了)..这也是我个人最常用的方法,好处是可以节省一个 struct 关键字的输入
Samoyed d2 = {.name = "哈士奇",.weight = 22.22f,.age = 1};
printf("d2.name = %s d2.weight = %.2f d2.age = %d\n",d2.name,d2.weight,d2.age);
//第6种,省略结构体的原名,直接使用typedef定义一个新名字
typedef struct {
float price;
char *brand;
} Computer;
Computer c = {.price = 12888.00f,.brand = "MacBookPro"};
printf("price = %.2f brand = %s\n",c.price,c.brand);
//最后总结:
//1.匿名结构体,值需要用一次,可以使用 struct {} 变量名
//2.标准的结构体, struct 结构体名 {}
//3.声明结构体的同时,接着声明一个结构体变量 struct 结构体名 {} 结构体变量名
// --------- 特别注意,使用typedef 定义结构体的时候,原来的结构体变量名此时就变成了结构体本身替换的名字,且在使用的使用可以省略一个struct关键字。
//4.使用typedef 给已经存在的结构体取别名 typedef existsStruct newStructName
//5.使用typedef 定义标准结构体 typedef struct 结构体名 {} 结构体别名
//6.使用typedef 定义省略结构体名只有别名的结构体 typedef struct {} 结构体别名
return 0;
}
iOS 学习心得记录之:C语言结构体定义的六中模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在面向接口、面向对象编程的过程中,会遇到实际物体类别与定义类别相分离的情况。 例如,我们有三种物体,他们的固有类别...
- 结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封...
- Js编程过程中,或多或少会出现需要动态生成一系列变量名,数量比较大时也不方便提前声明,这时候可能就需要先进行字符串...