美文网首页
20160720IOS_C

20160720IOS_C

作者: 2016AF | 来源:发表于2016-07-20 21:04 被阅读0次

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)

相关文章

  • 20160720IOS_C

    1、运算符取模运算符:%增量运算符:++ 前缀,后缀减量运算符:--+=, -=, =, /=, %=2、类型转...

网友评论

      本文标题:20160720IOS_C

      本文链接:https://www.haomeiwen.com/subject/kbavjttx.html