美文网首页
第十章 数组和指针——《C Primer Plus》笔记

第十章 数组和指针——《C Primer Plus》笔记

作者: One2INF | 来源:发表于2023-02-18 16:31 被阅读0次

    第十章 数组和指针

    10.1 数组

    用逗号分隔的值列表初始化数组。

    int powers[8] = {1,2,4,6,8,16,32,64};
    

    如果不初始化数组,数组元素是未知值;如果部分初始化数组,剩余元素初始化为 0

    指定初始化器(designated initializer)

    int days[12] = {31,28,[4]=31,30,31,[1]=29};
    

    防止数组越界访问

    10.2 多维数组

    即数组的元素是数组的多重嵌套,最常用的是二维数组,最好不要超过三维。

    10.3 指针和数组

    数组名是数组首元素的地址,因此可以用数组名给指针赋值,用指针间接访问数组。

    10.4 函数、数组和指针

    int arr[] 形式只能用于函数的形式参数

    10.5 指针操作

    • 赋值

    • 解引用

    • 取址

    • 指针与整数相加

    • 递增指针

    • 递减指针

    • 指针减去一个整数

    • 指针求差

    • 比较

    10.6 保护数组中的数据

    对于编写处理数组的函数,只能通过传递指针的方式访问数组。而函数可以通过指针修改原始数组数据,因此要注意数据保护,不需要修改时可以对形式参数添加 const 修饰保护。

    10.7 指针和多维数组

    int zippo[4][2];
    

    数组名是数组首元素的地址,zippo[4][2] 的首元素是大小为 2int 数组。

    zippo:指向大小为 2int 数组的指针;

    zippo[0]:指向 int 对象的指针;

    把非 const 指针赋值给 const 指针没问题,前提是只进行一级解引用,一下程序演示 const int 被修改了

    const int **pp2;
    int *p1;
    const int n = 13;
    pp2 = &p1;
    *pp2 = &n;
    *p1 = 10;
    

    10.8 变长数组(VLA)

    指可以在创建数组时使用变量指定数组的大小。c99 支持,C11 作为一个可选项。建议不用。

    10.9 复合字面量

    字面量:除符号常量外的常量。

    5int 类型字面量;

    81.3double 类型字面量;

    ‘Y’char 类型字面量。

    复合字面量:数组和结构的字面量。

    (int [2]){10, 20} 是复合字面量

    (int []){50, 20, 90} 是内含 3 个元素的复合字面量

    相关文章

      网友评论

          本文标题:第十章 数组和指针——《C Primer Plus》笔记

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