数据类型_类型,变量,成员;以及typedef

来源:互联网 发布:spss输入数据 编辑:程序博客网 时间:2024/06/05 10:07

(拾遗也是备忘)还是老样子,想说的话都在注释里,如果你的vs配色调得好的话应该比直接这么看省劲


比如 

int a 

就是 类型int 变量a

就这么简单,不要怕,只不过后来的类型都是自己编的而已,是同样的东西而已。成员是自己编的类型里的各种“数据项”【具体的就在下面第一个结构声明的注释里】

(学数据类型这一章时我 类型,变量,成员 都没搞懂(#捂脸),后来学了c艹才有感觉。。)

#include <stdio.h>struct A//定义A类型{int num;//成员numchar sex;}zhao;//变量zhao(A类型的)==========知识点分割线===============typedef struct B//B可加可不加,加了多余,否则B、C都存在并同样是这种类型{int num;}C;//P239 将变量名换成类型名并生成之,然后用它去定义变量void main(){struct A chen = { 100,'m' };printf("%d %c\n", chen.num, chen.sex);//struct A chen = { chen.num = 150};//不能多次初始化chen.num = 150;printf("%d %c\n", chen.num, chen.sex);B zhao = { 75 };//就像int a= 100;一样C li = { 65 };//B、C都可以代表同一个类型,但是不冲突printf("%d \n", zhao.num);printf("%d \n", li.num);typedef A D;//将A类型重命名为D类型/*struct D会报错,此处不需要struct*/D wang = { 95,'m' };printf("%d %c\n", wang.num, wang.sex);struct A xiang = { 93,'m' };//没报错,还能继续用!printf("%d %c\n", xiang.num, xiang.sex);//============知识点分割线===================================================typedef int CNM;CNM a = 10;printf("%d\n", a);int b = 5;//int仍然可以用哦~printf("%d\n", b);}

结构体成员变量定义有3种,(谭浩强 第四版 P295-P296)

1声明结构体类型 再 “类型 变量名”

2声明结构体类型 在尾巴分号前加 变量名

3*不指定类型名而直接定义结构体类型变量(这分明是就为了用一次啊,不打算再用这类型定义别的变量了)【如下】

struct {int num;//其他成员……}C;
这样也就用这么样儿地(mun 其他成员)类型的变量C,想再定义别的变量都没名字让你找!


同时这也方便了这种typedef方式(防止像例子注释那样一下子定义两个一模一样却名字不同的数据类型)

typedef struct {int num;//其他成员……}C;


P239(谭浩强 第四版)这页有一句话大义是: 将变量名换成类型名并生成之,然后用它去定义变量。
于是第三种“难以理喻”的声明方法就派上用上了~只有变量名而没有多余的类型名。

typedef int CNM;
这样就能理解本来就上面一句这么简单的一个类型替换为上面难以理喻的“没有第一个类型的”typedef了吧~

P329中(4)#define(预编译时字符串替换)和typedef(编译时先生成一个类型名,再用它去定义变量)的区别:

typedef struct B//B可加可不加,加了多余,否则B、C都存在并同样是这种类型{int num;}C;//P239(谭浩强 第四版) 将变量名换成类型名并生成之,然后用它去定义变量


0 0