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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容