------ android培训、java培训、期待与您交流! ----------
1.构造类型
根据已经定义的一个或多个数据类型用构造的方法来定义。
分为:数组、结构体和共用体
2.结构体
struct 结构体名{
成员列表;
};
1)结构体定义完成以后,计算机不会给结构体分配存储空间
2)会在定义结构体变量后,分配存储空间
struct student stu;//可以定义多个
3)匿名结构体
struct{
char * color;
int age;
}stu1,stu2;
4)结构体中成员的访问
用点
stu1.age
5)结构体的初始化
// // main.c // 结构体 // // Created by fanyafang on 15/11/5. // Copyright © 2015年 itcast. All rights reserved. // #include <stdio.h> #include <string.h> int main(int argc, const char * argv[]) { //先定义后初始化 struct student{ int age; char name[21]; }stu1,stu2; stu1.age=10; //stu1.name="fffff"; strcpy(stu1.name, "fanffff"); //定义的同时初始化 struct student stu={22,"ddd"}; struct student stu3={.name="ssssssd"}; printf("%s\n",stu1.name); printf("%s\n",stu.name); return 0; }
3.结构体占用的内存空间是每个成员占用的字节数之和(考虑对齐的问题)
计算结构体变量在内存中占用的字节数的方法
1)先找对齐的模数:是结构体中的基本数据类型中占用字节数最大的那个
2)在计算结构体变量的各个成员占用的字节和
4.结构体作用域
全局和局部
5.结构数组
struct student{ int age; char name[21]; }stu[3];
6.结构指针:指向结构体变量的指针
struct student *p=&stu;
访问方式:(*p).age或者p->age
7.结构体的嵌套:结构体的成员又是另外一个结构体变量,不可以嵌套自己这个类型的变量,但可以嵌套当前类型的指针
访问的时候用多个点
8.用结构体变量作为函数参数:值传递
结构体指针作为函数参数:地址传递
9.枚举
可看做基本数据类型
// // main.c // 枚举 // // Created by fanyafang on 15/11/5. // Copyright © 2015年 itcast. All rights reserved. // #include <stdio.h> int main(int argc, const char * argv[]) { // //enum Week{one,two,three}; //enum Week week; enum Week{one,two,three}week; week=two; printf("%d\n",week); return 0; }
10.typeof给已经存在的类型取别名
typeof int MALATANG;
MALATANG a=10;
用在数组:
typeof int ARRAY[5];//int a[5];
ARRAY a1={1,2,3,4,5};
用在结构体:
typeof struct person p;
11.预处理指令
以#开头的指令,宏定义define,文件包含include,条件编译
宏定义:#define M 5*5+5
1)替换时不加括号
2)字符串中的不会被替换
3)#undef M;//取消宏定义
4)可以嵌套
5)可以加参数 #define M(a) a*a+5
要把参数代入替换
6)有参宏传递参数的时候最好加括号
12.条件编译,减少.o文件的大小
#if #else #elif #endif
#ifdef//检测宏是否定义
#ifndef
13.static延长变量的生命周期
1)static定义局部变量的语句只会被执行一次(放在数据区)
2)static修饰的全局变量只能在当前文件中使用(内部变量)
在不同的文件中static可以声明相同的变量
3)static修饰的函数是内部函数,只能在当前文件中使用
14.extern
1)不能修饰局部变量
2)extern修饰的全局变量,可以在其他文件中使用
extern生命的全局变量在不同的文件中不能同名
在使用之前可以声明,extern int a;
3)extern修饰的函数可以在其他文件中使用
15.文件
ascii文件和二进制文件
头文件stdio
文件缓冲区,系统自动地在内存中为每个正在使用的文件开辟一个文件缓冲区
1)文件指针FILE *fp;
2)文件的打开:fp=fopen("a.txt",‘r‘);打开成功返回首地址,打开失败返回NULL
3)文件关闭:fclose(fp);正常关闭返回为0;
4)文件的使用方式
‘r‘ ‘w‘ ‘a‘ ‘r+‘ ‘w+‘ ‘a+‘ ‘t‘ ‘b‘
5)文件输入输出函数
fputc(字符,文件指针);
fgetc(文件指针);//指针自动偏移每次读一个字符
fputs(字符串,文件指针);
fgets(字符串,长度,文件指针);遇到\n或者EFO结束,读一行
原文:http://www.cnblogs.com/fanglove/p/4940236.html