20160720IOS_C

1、运算符
取模运算符:%
增量运算符:++ 前缀,后缀
减量运算符:--
+=, -=, =, /=, %=
2、类型转换基本规则:
(1)当出现在表达式里,有符号和无符号的char 和 short 类型都将被自动转换为int,在需要的情况下,将自动被转换为unsigned int
(2)在包含两种数据类型的任何运算里,两个值都被转换称两种类型里较高的级别
(3)类型级别从高到低为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int, int
(4)当作为函数的参数被传递时,char 和 short 会被转换为int,float会被转换为double,可以通过函数原型来阻止自动提升的发生
强制转换类型:(type) 变量名
3、函数
返回值类型 函数名(参数列表) //没有参数就用void , 形参:函数里声明的参数,实参:传递给参数的值
{
statement;
}
4、关系运算符
<, <=, ==, >=, >, !=
5、for循环
for (count = 1; count <= NUMBER; count++)
{
statement;
}
可以使用逗号运算符在for循环中使用多个初始化或更新表达式
for (a = 1, b = 2; a < 100; a++, b++)
{
statement;
}
逗号运算符:从左到右执行
6、do while循环
do
{
statement;
} while (boolean)
7、数组
type arrayName[size];
数组元素编号从0开始,直到size-1
char数组,并且存在的最后一个元素是 \0 ,则该数组是字符串
C90, c99:
int m = 3, n = 4;
int arr1[m], arr[n]; c90不允许,c99允许
初始化:type arrayName[size] = {值列表};//当数值数目少于数组元素数目时,多余的数组元素被初始化为默认值
const type arrayName[size] = {值列表};//定义只读数组
变量和数组元素未初始化的数值是不确定的
指定项目初始化:
int arr[6] = {[5] = 212};//C99 把arr[5]初始化为212
指定项目初始化注意事项:
int day[12] = {31, 28, [4] = 31, 30, 31, [1] = 29};
各元素的值: 0->31, 1->29, 2->0, 3->0, 4->31, 5->30, 6->31, 7->0, 8->0, 9->0, 10->0, 11->0
数组和指针:
arr[3]恒等于
(arr + 3)
&arr[3]等于arr + 3
变长数组:
并不表示在创建数组后,可以修改其大小。变长数组的大小在创建后就是保持不变的,“变”的意思是说其维大小可以用变量来指定
int sum2d(int rows, int cols, int ar[rows][cols]);
int sum2d(int, int, int ar[][]);//C99
8、if语句
if (expression)
{
statement;
}

    if (expression)
    {
        statement;
    }
    else //else与最近的if配对
    {
        statement;
    }
9、getchar(), putchar();
    char ch = getchar();//接收一个字符
    putchar(ch);//输出一个字符
10、ctype.h  系列字符函数
    isalnum() 字母或数字
    isalpha() 字母
    isblank() 空白字符(空格、水平制表符、换行)
    iscntrl() 控制符
    isdigit() 阿拉伯数字
    isgraph() 除空格以外的字符
    islower() 小写字母
    isprint() 可打印字符 
    ispunct() 标点符号
    isspace() 空白字符:空格、换行、走纸、回车、垂直制表符、水平制表符
    isuper() 大写字母
    isxdigit() 十六进制数字字符
    tolower() 返回小写字符
    toupper() 返回大写字符
14、逻辑运算符
    &&, ||, ! 具有短路性
    #include <iso646.h> 后,可以使用 and, or, not
15、stdbool.h
    提供bool,true,false的定义,使用布尔类型时需要include
16、条件运算符
    expression ? if-true-expression : if-false-expression;
17、循环辅助语句 continue, break
    continue:
        (1)忽略剩余代码,进行下一次迭代
        (2)位于嵌套结构中,忽略里层循环
    break:
        终止循环
18、switch语句
    switch(expression)
    {
        case exp1:
            statement;
            break;  //如果没有break会往下执行
        default:
            statement;
            break;
    }
19、goto语句
    (1)定义标签
        标签名:
    (2)跳转
        goto 标签名;
20、缓冲分类
    完全缓冲I/O, 行缓冲I/O
    对于完全缓冲输入来说,缓冲区满时被清空(内容被发送至其目的地),这种类型的缓冲通常出现在文件输入中,缓冲区的大小取决于系统,但512字节和4096字节是常见的值
    对于行缓冲I/O来说,遇到一个换行字符时将被清空缓冲区,键盘输入是标准的行缓冲,按下回车键将清空缓冲区
21、file_efo.c
    #include <stdio.h>
    #include <stdlib.h> //为了使用exit()
    int main()
    {
        int ch;
        FILE *fp;
        char fname[50];
        printf("Enter the name of the file:");
        scanf("%s", fname);
        fp = fopen(fname, "r");
        if(fp == NULL)
        {
            printf("Failed to open file. Bye\n");
            exit(1);
        }
        while((ch = getc(fp) != EOF)
        {
            putchar(ch);
        }
        fclose(fp);
        return 0;
    }
22、函数
    返回值类型 函数名(类型 参数名, 类型 参数名)
    {
        
    }
    void fuc();//不会进行参数检查
    void fuc2(void);//表明该函数确实不使用参数,编译器就会检查确实有没有使用参数
    递归:
        调用自己的函数称为递归
        递归函数必须在某一条件下返回确定的值,否则产生无限调用
    对形参使用const修饰符,编译器会把形参当作常量来对待,无法修改
23、地址运算符 &
24、取值运算符 * 也叫间接运算符
    声明一个指针: 类型 * 指针名
    指针可以作为函数的参数
    取指针地址——指针变量同其他变量一样具有地址和数值,使用运算符&可以的饿到存储指针本身的地址
    常量或非常量数据的地址赋给指向常量的指针是合法
    只有非长脸该数据的指针才可以赋给普通的指针
    const int * pc;//指向常量int类型的指针,指针可改,数据不可改
    int * const pc2;//常量指针,指针不可改,数据可改
    const int * const pc3;//指针不可改,常量不可改
    定义指向多维数组的指针: int (* pz)[2];//pz指向一个包含2个int值的数组
    指针之间的赋值规则比数值类型的赋值更加严格,类型不同就不行
25、复合文字
    创建一个包含两个int值的无名称数组:
        (int [2]) {10, 20}
        (int []) {10, 20, 30}
26、字符串I/O
    gets(字符串数组名):最后一个元素是\0,返回获取的字符串的地址,如果出错或gets()遇到文件结尾,返回一个空地址
    puts(字符串|字符串数组);
    字符串数组初始化:
        (1)char array1[size] = "this is a string.";
        (2)char array2[size] = {'t', 'h', 'i', 's', 'i', 's', 'a', 's','\0'};//这种方式最后一个元素必须是\0,多余的数组会被初始化为\0
    区别:
        char heart[] = "I love";//不能用于++, --
        char *head = "I like";//可用于++, --
        主要区别在于数组名heart是个常量,而指针head则是个变量
        head = heart;//合法
        heart = head;//非法
    fges()函数:多用于文件读取
        (1)第二个参数来说明最大读入字符数,如果这个参数值为n,fgets()就会读取最多n-1个字符或者读完一个换行符为止
        (2)如果fgets()读取到换行符,就会把它存到字符串里,而不是想gets()那样丢弃它
        (3)第三个参数来说明读哪一个文件。使用stdin作为参数,从键盘上读数据
    scanf(), gets():
        scanf更基于获取单词而不是获取字符串,gets函数会读取所有的字符,直到遇到第一个换行符为止
    puts(地址参数):参数是一个地址
        显示字符串时自动在其后添加一个换行符,直到遇到空白字符\0
    fputs()函数:多用于文件读取
        第二个参数说明要写的文件,使用stdout作为参数来进行输出显示
        fputs()并不为输出自动添加换行符
27、字符串函数 string.h 
    strlen()函数:返回字符串的长度
    strcat()函数:两个参数为char * 类型,将第二个参数附加到第一个参数后面
    strncat()函数:三个参数,第三个指定第二个参数添加到第一个参数的长度,当加到足够字符或遇到空字符时停止
    strcmp()函数:两个字符串参数,a1>a2返回1,a1=a2返回0,a1<a2返回-1
    strncmp(a1, a2, int)函数:第三个参数指定a1, a2比较的字符串长度
    strcpy(a1, a2)函数:把a2的内容复制到a1,要保证a1的控件足够大容纳,返回第一个参数的字符的地址,第一个参数可以使数组中的中间的一部分
    声明一个数组将为数据分配存储控件,而声明一个指针只为一个地址分配存储空间
    strncpy(a1, a2, length):第三个函数指明最大可复制的字符数,如果a2比length大,则没有添加空字符,因此需要设置n为目标数组大小减1,然后将最后一个数组元素赋值为'\0'
    sprintf(存储, 转换说明字符, 项目列表)函数:跟printf类似,将结果存储到存储地址里
    
    常用:
        char *strcpy(char * s1, const char * s2);
            把s2指向的字符串(包括空字符)复制到s1指向的位置,返回值是s1
        char *strncpy(char * s1, const char * s2, size_t n);
            把s2指向的字符复制到s1指向的位置,复制的字符数不超过n个,返回值是s1.空字符后的字符不被赋值,如果原字符串的字符数少于n个,在字符串中就以空字符填充。如果源字符串的字符数大于或等于n个,空字符就不被赋值,返回值是s1
        char *strcat(char * s1, const char * s2);
            s2指向的字符串被复制到s1指向字符串的结尾,复制过来的s2所指字符串的第一个字符覆盖了s1所指字符结尾的空字符,返回值是s1
        char *strncat(char * s1, const char * s2, size_t n);
            s2字符串中只有前n个字符被追加到s1字符串,复制过来的s2所指字符串的第一个字符覆盖了s1所指字符结尾的空字符,s2字符穿中的空字符及其后的任何字符都不会被赋值,并且追加一个空字符到所得结果后面,返回值是s1
        int strcmp(const char * s1, const char * s2);
            如果s1字符串在机器编码顺序中落后于s2字符,函数的返回值是一个整数;如果两个字符串相同,返回值是0;如果第一个字符串在机器编码顺序中先于第二个字符串,返回值是一个负数
        int strncmp(const char * s1, const char * s2, size_t n);
            函数的作用和strcmp()一样,只是比较n个字符后或者遇到第一个空白字符时会停止比较,由二者中最先被满足的那一个条件终止比较过程
        char * strpbrk(const char * s1, const char * s2);
            返回一个指针,指向字符串s1中存放s2字符中的任何字符的第一个位置,如果没有找到任何字符,返回空指针
        char *strrchr(const char * s, int c)
            返回一个指针,指向字符串s中字符c最后一次出现的地方(标志结束的空字符是字符串的一部分,因此也可以搜索到它),如果没找到该字符,函数就返回空指针
        char *strstr(const char * s1, const char * s2)
            返回一个指针,指向s1字符串中第一次出现s2字符串的地方,如果在s1中没找到s2字符串,函数就返回空指针
        size_t strlen(const char * s)
            返回s字符串中的字符个数,其中布包裹标志结束的空字符
        char *strcpy(char * s1, const char * s2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容