zoukankan      html  css  js  c++  java
  • 《C Primer Plus 第五版》读书笔记

    CH1-2:概述

    链接器:链接库代码、启动代码(start-up code)

    CH3-5:数据、字符串、运算符

    1 数据类型存储方式:整数类型、浮点数类型

    2 浮点数存储:小数部分+指数部分

    3 int:

        3.1 %#o,%#x,%#X 分别是前缀0,0x,0X

        3.2  (32位系统,括号中为64位)       

    JMVU[E4I59`D9~S)RM`%PHI

    4 char:转义字符 

    `]1179Y_CA[`PVA{B55G[$S

    5 字符串 string.h

    6 printf()作用:断行;换行。 printf()有返回值,正确返回打印字符数,错误打印负数。

    7 sizeof 与 sizeof()

    8 const

    9 参数传递

    10 scanf():注意 将字符串读入数组不加取地址符&。返回值为成功读入项目个数,没读到返回0,检测文件结尾返回EOF

      *用法: printf("%*.*f", width, precision, value);设置宽度和精度

                     scanf("%d %d %d",&n);//跳过前两个整数,把第三个数读给n

    其他用法:

    while(scanf("%d",&num)==1)

                          continue;//作为占位符,使程序更可读

                         作用:跳过特定输入,如整数。

    CH6-9:循环、分支跳转、字符输入输出、函数

    1 continue和break

    2 单字符

    getchar() 流中放入字符

      while((ch = getchar())!=‘ ’)防止换行符影响

    putchar() 流中取出字符

    CH10:数组和指针

    1 数组赋值:[ ]指定特定元素

    int arry[6] = {[5]=220};


    2 数组与指针

    array == &array[0];

    array +2 == &array[2];

    *(array + 2)== array[2];

    * array + 2 == array[0] + 2;


    3 数组与函数

    int sum(int *array, int n);

    int sum(int * , int );


    int sum(int array[ ], int n);

    int sum(int [ ], int);

    4 指针

    *指针必须初始化


    5 const

    int * const ptr = ...; 指针不会指向别处 ptr是指针

    const int * ptr = ...; 指向的数据不会改变 *ptr是数据

    const int * const ptr = ...; 指针和指向的数据都不会改变


    6 指针和多维数组array[2][2]

    array = &array[0][0] 数组首地址,第一行首地址

    array + 1 == &array[0][1] 第二个元素地址

    array + 2 == &array[1][0] 第三个元素地址

    *(array + 1) == &array[1][0] 第二行的首地址

    *(array + 1) + 1 == &array[1][1] 第二行第二个元素地址

    *(*(array + 1) + 1) == array[1][1] 第二行第二个元素数据


    7 数组指针(数组的指针)与指针数组(指针的数组)

    数组指针:指向一维数组的指针,行指针
    定义 int (*p)[n];//执行p+1时,p要跨过n个整型数据的长度

    指针数组:有n个指针类型的数组

    定义 int *p[n];//这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。

    8 声明N维数组的指针时,只有最左边的方括号可以留空

    int sum(int array[ ][4]);


    9 变长数组VLA

    变长数组必须是auto存储类型

    int row = 5;

    int array[row];//row的声明要早于array


    int sum(int array[row], int row);//错误!row的声明需要早于array

    int sum(int array[ * ], int );//如果省略row名称,array需要用*号代替维数


    10 复合文字(可传递数组常量,普通数组只能传递数组变量)

    声明方法:(int [2]) {10, 20}

                      (int [  ]) {10, 20, 30}

    使用方法:int * ptr; ptr = (int [2]) {10, 20}; //使用指针

                     int sum(int array[ ]);sum( (int [  ]) {10, 20, 30} )

    CH11:字符串和字符串函数

    1 指针数组

    char * ptr[5];

    2 数组指针

    char (*ptr)[5];

    3 gets( )

    从标准输入得到字符串,以换行符 标记输入结束。

    返回 前所有字符+,丢弃 等待下一次调用。

    4 fgets( ) 如果读到 就一并保存到字符串

    ptr = fgets(name, MAX, stdin);从stdin读入最大MAX个字符给name。

    5 puts( ) 自动添加换行符

    6 fputs( ) 不自动添加换行符

    fputs(name, stdout);

    7 字符串函数

    strlen( )

    strcat( ) 字符串添加到另一个字符串尾

    strncat( ) 限制添加的字符数

    strcmp( )

    strncmp( ) 比较前几个字符

    strcpy( )

    strncpy( )

    sprintf( ) 格式化输入到字符串

        sprintf(formal, "%s, %-19s: $%6.2f ",last, first, prize);

    查找字符

    ptr = strchr(line, ' ');//返回line中第一个 的地址

    ptr = strrchr(line, ' ');//返回line中最后一个 的地址

    查找子串

    ptr = strstr(line, subline);//返回line中第一个subline子串的地址

    8 字符串转换为数字

    atoi( );

    atof( );

    atol( );

    strtol( );

    strtoul( );

    strtod( );

    CH12:存储类、链接和内存管理

    存储类:自动、寄存器、外部链接静态、内部链接静态

                    auto    register     extern        static

    作用域:代码块、文件

    链接类型:内部、外部、空

  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/lucas-hsueh/p/3714406.html
Copyright © 2011-2022 走看看