黑马程序员技术交流社区

标题: 每天记一点,掌握重点难点. [打印本页]

作者: jeffdy66    时间: 2015-11-11 21:52
标题: 每天记一点,掌握重点难点.
1.全局变量是什么?
答:在所以函数外部定义的变量,称为全局变量.
2.有什么用?
答:用于存储一个需要存期存于内存,并需要改变的变量.

3.How to use?
答:跟普通变量没区别,只在位置的所有函数之外.
4.什么时候用?
答:当需要定义一个随程序一直存于内存中,并可以被其它函数共享变量的时候.

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

6.结构体是什么?
答:是一种数据类型,是构造类型,里面可以存不同类型的数据.
7.有什么用?
答:用于封装不同数据类型到一个结构中,方便使用.

8.How to use ?
定义:结构体类型  struct 结构体类型{数据类型1 名称; 数据类型2 名称...}
定义结构体变量及赋值: struct 结构体类型 变量名={数据1,数据2...}
取值:变量名,结构体元素变量名, 赋值:变量名 结构体元素变量名=新值;

9.什么时候用?
当需要把相关联的不同数据类型封装起来一起使用的时候.
10.有什么特点?
e:可在定义结构体类型时同时定义结构体变量名,可定义匿名类型结构体.
f:同一作用域内不可重复定义 结构体类型和结构变量,匿名类型结构体除外.
g:可同时在函数内外定义一个类型,使用同样遵循就近原则,结构体变量也是如此.


struct Person {
char *name;
int age;
};
struct Person per1={"heima",19);
struct Persin per={"itcast",19);
return 0;
int add ( ){
struct Sun{
char *name;
int age;
}



11.结构体数组是什么?
答:是数组,只不是数组里每一个元素是结构体类型.
12.有什么用
答:用于存储多个有关联的结构体.

13.How to use?
定义及初始化赋值:struct 结构体类型 数组名[长度]={结构体1,结构体2};
如:struct Person {char *name; int age;};
取值:数组名[角标]; 单独赋值:数组名[角标]=新的结构体;
如:struct Person per3=arr[0];

14. 什么时候用?
答:当需要存储多个有关联的结构体,并作为一个整体使用时.
15.有什么特点
答:遵循数组的特点

int main(){
   
       struct Person{
        
        char *name;
        int age;
    };
   
    struct Person per= {"itheima",2};
    struct Person per1={"itcast",3};
    struct Person arr[2]={"per,per1"};
    printf("%s---%d\n",arr[1].name,arr[1].age);
   
   
    return 0;
}


16 . 结构体指针是什么?
答: 是指针,不是指针类型而是结构体类型指针
17.有什么用?
用于存储结构体的地址,并操作地址对应的结构体空间的数据.

18.怎么用?
定义初始化赋值: struct 结构体类型 * 指针名=&结构体变量
For example: struct Person {char *name; int age;}; struct Person *p=&per;
取值 :(*指针名).结构体元素名;   指针名->结构体元素名;
赋值:(*指针名). 结构体元素名=新值;  指针名->结构体元素名=新值
For example: (*p).name, (*p).age; 或 p->age, p->name;

19. 什么时候用?
答:当需要使用指针操作结构体时.
20.有什么特点?
答:指针移动对结构体本身没有意义,结构体名并不包含第一个元素的地址.




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

2.整个结构体的字节数必须是其最大元素所占字节的整数倍,如果不够,最后一个元素填充字节.


21. 枚举是什么?
答:是一种数据类型,称为枚举类型,是构造类型的一种,里面存的都是有别名的整型常量.
22.有什么用?
答:可以把多个整型常量以别名的形式封装成一个整体,便于别的变量识别并取值使用.
23.How to use ?
定义:1.定义枚举类型 enum 枚举类
int main(){
   
    enum day{
        
        MORNING,   // 0
        AFTERNOON, // 1
        NIGHT,     // 2
    };
   
    enum Day daystatus=MORNING;
    // 取值:变量名=枚举元素名
    daystatus=MORNING;
    printf("daystatus=%d\n",daystatus);
    daystatus=AFTERNOON;
    printf("daystatus=%d\n",daystatus);
    daystatus=NIGHT;
   
    // 用普通变量//
    int status=0 ; // 表示早上
    int status=1; //  表示中午
    int status=2; //  表示晚上
   
    printf("daystatus=%d\n",daystatus);
   
    int a;    // 0表示关  1表示开,没有其他的取值
    a=1;
    a=0;
    enum Status{
        CLOSE,
        OPEN,
        
    }nowStatus=open;
    nowStatus=OPEN;
    nowStatus=CLOSE;
    printf("a=%d--nowStatus=%d\n",a,nowStatus);
   
}

型{元素1,元素1,...};或{元素1=0,元素2=1};

       2.定义枚举变量及赋值:enum 枚举类型  变量名=对应枚举里的一个元素名;
取值: 变量名=枚举元素名


24. 什么时候用?
答:当一个变量只要固定的多个int取值范围时.
25.有什么特点?
1.枚举类型值能是int值,且不能直接用int常量,需要用别名(建议全部大写)
2.如果不设定值,那么默认第一个元素是0,以此类推.
3.同一个作用域内不能出现重复的元素,不同的枚举类型也不行.
#include <stdio.h>
int main(){
enum LoveType{
      MAN,
     WOMEN,
    MANANDWOMEN,
} myLoveType;
myLoveType=MAN;
printf("%d\n",myLoveType);
myLoveType=WOMEN;
printf("%d\n",myLoveType);
myLoveType=MENANDWOMEN;
printf("%d\n",myLoveType);
return 0;
}







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