黑马程序员技术交流社区

标题: 关于我的笔记 [打印本页]

作者: xiaoguang    时间: 2015-8-12 22:04
标题: 关于我的笔记
补充1.>>

补充2.>>指针是不是地址?
        指针在内存中占用8(64位),并且,指针里面呢个存地址,指针有自己的地址
        指针里面存的地址可以变化,但是地址本身不能变化;
        指针由类型概念,地址只是一个16进制的常量;
        指针本身可以移动,指向新的数据空间,并且指针移动一位字节数哦不一样(由类型决定)
        指针由两层含义:1.>表示一个能存地址的变量(等效于指针变量),2.指还含有数据类型的概念



1.>>全局变量
        在所有函数外部定义的变量,
            (全局变量默认值为  0)
        用于存储一个需要长期存于内存,并需要改变的变量
        跟普通变量没区别,只在位置在所以函数之外;
        当需要定义一个随程序一只存在于内存中,并可以被其他函数共享的变量的时候;

        特点:
                生命周期随程序,程序启动创建,程序退出才会销毁;
                作用域是其所在位置之下的所有函数都可以共享并改变
                变量的使用遵循就近原则,如果函数内有同名变量,那么用函数自己的
                如果没有初始化赋值,默认值是0

2.>>结构体
            是一种数据类型,是构造日行,里面可以存放不同类型的数据
            用于封装不同的数据类型倒一个结构中;
        定义:1.  定义结构体类型  struct 结构体类型{ 数据类型1  名称;数据类型2  名称};
                2.  定义结构体变量及赋值: struct 结构体类型 变量名={数据1,2,...};
        取值: 变量名.结构体元素变量名;    赋值:变量名.结构体元素变量名=新值;
        特点:
                可在定义结构体类型时同时定义结构体变量名,可定义匿名类型结构体(*注意必须同时初始化变量);
                同一个作用域内不可重复定义结构体类型和结构变量,匿名类型结构体除外
                可在函数内也可在函数外,效果及用法类似于局部变量和全局变量,也可嵌套定义
               




3.>>结构体数组
        是数组,只不受数组里每一个元素是结构体类型


4.>>结构体的指针
        是指针,不是指针类型是结构体类型
        存储结构体的地址,操作地址对应的结构体空间里的数据
        定义:

         
  取值和赋值:

     
特点:指针移动对结构体本身没意义.结构体名并不包含第一个元素的地址;

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



5.>>枚举
        是一种数据类型,称为枚举类型,是构造类型的一种,里面存的都是由别名的整形常量
        可以吧整形常量以别迷宫的形式封装成一个整体,便于别的变量识别并取值使用
    定义:
            enum   枚举类型{元素1,元素2...}或者{元素1=0,元素2=1...}
            定义枚举变量及赋值:  enum 枚举类型   变量名=应对枚举里的一个元素名
    特点:          枚举一旦类型定义成功后里面的数据常量不能再更改;
            枚举类型只能是int值,且不能直接用int 常量,需要用别名(建议全部大写)
            如果不设定值,那么默认第一个元素是0,以此类推;
            同一个作用域内不能出现重复的元素,不同的枚举类型也不行
            枚举里的数据更改后,后面的值也一起更改,但是上面的值不变;

6.>>宏定义
        是一个替换代码的预处理指令
            在编译之前进行
        开始替换:  #define   被替换内容  替换成的内容
        结束替换:  #undef 被替换内容  (表示到一行,宏定义失效)
    特点:
            命名尽量以大写或者小写k开头,便于区分(规范)
            被双引号的引起来的不会被替换(被引起来后就是一个字符串)
            宏定义只会做代码替换,不急关注任何逻辑,容易出现优先级错误(加括号解决)
            替换可以设置作用域,如果不设置,作用域则是这行代码出现到代码的最后一行



作者: zhao95    时间: 2016-3-9 22:25
好!收藏了~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2