20160721IOS_C

1、main可以没有参数或者有两个参数:
(1)第一个参数是命令行的字符串数
(2)第二个参数是一个指向字符串的指针数组

2、stdlib.h
(1)atoi(char * str);//将字符串转换成整数,失败返回0
(2)atol(char * str);//转换称long类型
(3)atof(char * str);//转换称double类型
(4)strtol(char * str, char **endptr, int (5)base);//把字符串转换成double类型,还可以识别并报告字符串中非数字的第一个字符,还可以指定数字基数
(6)strtoul(char * str, char **endptr, int (7)base);//把字符串转换成double类型,还可以识别并报告字符串中非数字的第一个字符,还可以指定数字基数
strtod(char * str, char **endptr);//把字符串转换成double类型,还可以识别并报告字符串中非数字的第一个字符
3、C变量的链接
(1)分为外部链接、内部链接、空链接
(2)居右代码块作用于或者函数原型作用域的变量有空连接,由其定义所在的代码块或函数原型所私有
(3)具有文件作用域的变量有外部链接,一个外部链接的变量可以在一个多文件程序的任何地方使用
(4)具有文件作用域的变量有内部链接,一个内部链接的变量可以在一个文件的任何地方使用
4、自动变量
(1)属于自动存储类的变量居右自动存储时期、代码块作用域和空链接。默认下,在代码块或函数的头部定义的任意变量都属于自动存储类,也可以显式使用auto定义:auto int plox;//auto称为存储类说明符
(2)在嵌套代码块中,如果在内层代码块定义了一个具有和外层代码块变量同一名字的变量,内层代码块定义的名字是内层代码块所使用的变量,称为内层定义覆盖了外部定义
(3)除非显式初始化自动变量,否则它不会被自动初始化,未初始化的值是先前占用分配给它的空间的任意值
5、寄存器变量
(1)与自动变量一样,具有代码块作用于、空链接、以及自动存储时期,
(2)通过存储类说明符register定于:register int quick;
(3)不能对寄存器变量使用地址运算符&
(4)有可能寄存器变量不在寄存器中,而在高速内存中,但依然不能对它使用地址运算符

6、具有代码块作用域的静态变量
(1)代码块运行完,静态变量不消失
(2)使用const定义:const int stay;
(3)对函数参数不能使用static
7、具有外部链接的静态变量
(1)居右文件作用域、外部链接和静态存储时期
(2)把变量的定义声明放在所有函数之外,即创建了一个外部变量
(3)可使用extern关键字声明,若变量是在别的文件中定义的,使用extern来声明变量就是必须的
(4)外部变量在本地使用可不声明,如要声明需要添加extern关键字(对于数组,不要填写数组长度),如果没有添加则会覆盖外部变量而创建自动变量
(5)如果不显式地对外部变量进行初始化,外部变量会自动被赋值为0
8、具有内部链接的静态变量
(1)具有静态存储时期、文件作用于以及内部链接
(2)可被同一文件中的函数所使用,而普通的外部变量可以被程序的任意文件访问
(3)可用extern再次声明任何具有文件作用于的变量
9、多文件中的全局变量
(1)除了一个声明外,其他所有声明都必须使用关键字extern,并且只有在定义声明中才可以对该变量进行初始化
(2)除非在第二个文件中也声明了该变量(使用extern),否则在一个文件中定义的外部变量不可以用于第二个文件
(3)一个外部变量声明本只是使一个变量可能对其他文件可用
10、 存储类说明符
(1)auto, register, static, extern, typedef, 只能使用一个
(2)auto表明一个变量具有自动存储时期,该说明符只能用在具有代码块作用域的变量声明中
(3)register只能用于具有代码块作用域的变量,它将一个变量归入寄存器存储类,相当于请求将该变量存储在一个寄存器内,它的使用也使你不能获得变量的地址
(4)static在用于具有代码块作用域的变量的声明时,使该变量具有静态存储时期,从而得以在程序运行期间(即使在包含该变量的代码块并没有运行时)存在并保留其值。变量仍具有代码块作用域和空链接,static用于具有文件作用域的变量的声明时,表明该变量具有内部链接
(5)extern表明你在声明一个已经在别处定义了的变量。如果包含extern的声明具有文件作用域,所指向的变量必然具有外部链接。如果包含extern的声明具有代码块作用域,所指向的可能具有外部链接也可能具有内部链接,这取决于该变量的定义声明
11、存储类和函数
(1)double ganma();//默认是外部的函数
(2)static double beta();//beta函数被限定在该文件内,其他文件可使用相同名称的不同函数
(3)extern double delta();//使用关键字extern来声明在其他文件中定义的函数
12、随机数
(1)rand()产生随机数
(2)定义随机数的范围: rand() % sides + 1;
(3)rand()是伪随机数发生器,随机数的产生基于一个称为“种子”的数字
13、分配内存malloc, free, calloc
(1)double * ptd = (double *)malloc(30 * sizeof(double));
(2)可以用数组的方式来访问内存块的各个元素
(3)创建动态大小的内存空间(数组):double * ptd = (double *)malloc(n * sizeof(double));
(4)malloc创建的地址需要通过调用free释放内存:free(ptd);
(5)如果无法分配内存空间就返回空指针
(6)类型指派(double )在c可选,但在c++中是必须的
(7)stdlib.h 提供退出程序函数 exit(),其中常量参数:EXIT_SUCCESS, EXIT_FAILURE
(8)long * newmen = (long )calloc(100, sizeof(long));,块中的全部位置零,可用free释放内存
(9)malloc和变长数组的区别:变长数组是自动存储的,变长数组所用内存空间在运行完定义部分之后会自动释放
(10)malloc创建多维数组:int (
p2)[m] = (int (
)[m])malloc(n * m * sizeof(int));
14、类型限定词
(1)幂等性:const const const int n = 6;//相当于 const int n = 6;
(2)用const修饰指针,const float * pf;//pf指向一个常量浮点数值,指针指向的地址可改,指向的数据不可改
(3)float * const pt;//pt是一个常量指针,指向的地址不可改,指向的数据可改
(4)const float * const ptr;//ptr是一个指向常量的常量指针
(5)cosnt修饰函数参数const int array[], cosnt int * array, 表明array指向的数据是不可变的
(6)对全局变量使用const, 其他文件调用声明 extern const double PI, extern const char * MONTH[]
(7)类型限定词volatile表明该变量除了可被程序意外还可被其他代理改变
(8)类型限定词restrict允许编译器优化几种代码增强计算支持,只可用于指针,并表明指针是访问一个数据对象的唯一且初始的方式:int * restrict restar = (int *)malloc(10 * sizeof(int));
(9)void ofmout(int * const a1, int * restrict a2, int n);//以前的风格
void ofmouth(int a1[const], int a2[restrict], int n);//C99允许
double stic(double ar[static 20]);
15、标准I/O
(1)FILE *fp;
(2)fp = fopen(filename, "r");//打开文件失败返回NULL
(3)(ch = getc(fp)) != EOF //读取一个字符
(4)putc(ch, stdout); //相当于putchar(ch);
(5)fclose(fp);
(6)fopen()函数的模式字符串
①"r":打开一个文本文件,可以读取文件
②"w":打开一个文本文件,可以写入文件,先将文件的长度截为零,如果该文件不存在则先创建之
③"a":打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建之
④"r+":打开一个文本文件,可以进行更新,也即可以读取和写入文件
⑤"w+":打开一个文本文件,可以进行更新(读取和写入),如果该文件存在则首先将其长度截为零,如果不存在则先创建之
⑥"a+":打开一个文本文件,可以进行更新(读取和写入),向已有文件的尾部追加内容,如果该文件不存在则先创建之,可以读取整个文件,但写入时只能追加内容
⑦"rb","wb","ab","ab+","a+b","wb+","w+b","ab+","a+b":与前面的模式相似,只是使用二进制而非文本模式打开文件
(7)putc(ch, fpout);//将ch字符写入到FILE指针fpout指定的文件中
(8)fp = getc(fp);//当尝试读入字符时发现已经达到文件结尾,getc()函数会返回一个特殊只EOF
(9)fclose(fp)函数关闭由指针fp指定的文件,同时根据需要刷新缓冲区,更正规的程序还要检查是否成功关闭了文件,如果文件成功关闭,fclose()函数将返回值0,否则返回EOF
(10)标准文件指针:标准输入stdin, 标准输出stdout, 标准错误stderr

你可能感兴趣的:(20160721IOS_C)