A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Esther33 中级黑马   /  2015-8-11 21:17  /  837 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

全局变量
1.概念:在所有函数外部定义的变量,称为全局变量
2.作用:用于存储一个需要长期存于内存,并需要改变的变量
3.特点:①生命周期跟随程序,程序启动创建,程序退出才会销毁
            ②作用域是其所在位置之下得所有函数,都可以共享并改变
            ③变量的使用遵循就近原则,如果函数内有同名变量,那么函数调用的是函数内的
            ④如果没有初始化赋值,默认值是0

结构体
1.概念:是一种数据类型,是构造类型,里面可以存不同类型的数据
2.作用:用于封装不同的数据类型到一个结构中,方便使用
3.用法:
定义:①定义结构体类型 struct 结构体类型{ 数据类型1 名称;数据类型2 名称;...}
         ②定义结构体变量及赋值:struct 结构体类型 变量名={数据1,数据2...};
取值:变量名  结构体元素变量名
赋值:变量名  结构体元素变量名=新值
4.特点:①可在定义结构体类型时同事定义结构体变量名,可定义匿名类型结构体
            ②同一作用域内不可重复定义结构体类型和结构变量,匿名类型结构体除外
            ③可在函数内也可在函数外,效果及用法类型于局部变量和全局变量,也可嵌套定义
            ④可同事在函数内外定义同一个类型,使用同样遵循就近原则,结构体变量也是如此

结构体数组
1.概念:是数组,只不过数组里每一个元素是结构体类型
2.作用:用于储存多个有关联的结构体
3.用法:
定义:struct 结构体类型  数组名[长度]={结构体1,结构体2}
赋值:

取值:数组名[角标];单独
4.特点:遵循数组的特点

结构体的指针
1.概念:是指针,只不过指针类型是结构体类型
2.作用:用于存储结构体的地址,并操作地址对应的结构体空间里的数据
3.用法:
定义及初始化赋值: struct 结构体类型 *指针名=&结构体变量

取值:(*指针名).结构体元素名; 如:(*p).name
           指针名->结构体元素名; 如p->name
赋值:*指针名).结构体元素名=新值;如(*p).name=“hello”
          指针名->结构体元素名=新值; 如p->name=“hello”
4.特点:指针移动对结构体本身没有意义,结构体名并不包含第一个元素的地址

结构体分配内存空间遵循两个原则(对齐原则或对齐算法):
1.每个元素的偏移量(当前元素首地址距离整个结构体首地址的字节数)必须是自己所占有字节数的整数倍,如果不够,补齐上一个元素的字节数
2.整个结构体的字节数必须是其最大元素所占字节的整数倍,如果不够,最后一个元素填充字节

枚举
1.概念:是构造类型的一种,里面存得都是有别名的整形常量
2.作用:可以把多个整形常量以别名的形式封装成义个整体,便于别的变量识别并取值使用
3.用法:
定义:①定义枚举类型  enum 枚举类型{元素1,元素1,...};
                                                    或{元素1=0,元素2=1};
         ②定义枚举变量及赋值:enum 枚举类型 变量名=对应枚举里的一个元素名;
取值:变量名=枚举元素名
4.当一个变量只有固定的多个int 取值范围时
5.特点:①枚举类型智能是int 值,且不能直接用int常量,需要用别名(建议全部大写)
            ②如果不设定值,那么默认第一个元素是0,以此类推
            ③同一个作用域内不能出现重复的元素,不同的枚举类型也不行

注意:枚举一旦类型定义成功之后里面的数据常量不能再更改

共同体:同一片空间,可以存不同的数据类型,但是每次只能创建一个类型元素
如:union person per; 任意一次赋值都会把之前的数据替换


宏定义
1.概念:是一个替换代码的预处理指令
2.作用:可以在编译之前进行代码替换
3.用法:
开始替换:#define 被替换类容   替换成的内容
如:#define kLength 6表示从这行开始下面所有代码中的kLength替换成6
结束替换:#undef  被替换内容; 如:#undef kLength表示到这一行,宏定义失效
4.当需要用一些重复性代码或简单的函数运算时,可以用宏定义,提高效率
5.特点:①命名尽量以大写或小写k开头,便于区分(规范)
②被双引号括起来的不会被替换
③宏定义只会做代码替换,不会关注任何逻辑,容易出现优先级错去(加括号解决)
④替换可以设置作用域,如果不设置,作用域则是这行代码出现到代码的最后一行

15 个回复

倒序浏览
好吧!还是蛮全的。。
回复 使用道具 举报
恩,貌似确实是一个班的啊,你哪位啊?
回复 使用道具 举报
写的还不错
回复 使用道具 举报
路过中。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
互踩,互踩,互踩,重要的事说三遍,
回复 使用道具 举报
tianmoqingcheng 来自手机 中级黑马 2015-8-11 23:02:24
7#
不错不错!!!
回复 使用道具 举报
挺给力的
回复 使用道具 举报
给力啊。值得我好好学习。
回复 使用道具 举报
继续努力啊!不错啊
回复 使用道具 举报
666.。。
回复 使用道具 举报
原来是同组的妹子啊.幸会幸会.
回复 使用道具 举报
很好!继续坚持!!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
不错哟。。。
回复 使用道具 举报
已看,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马