【温故知新】1.数组

这篇笔记探讨了C语言中的数组和指针,包括数组名在表达式中的行为,`sizeof`和`&`运算符的区别,以及指针和下标的效率对比。强调了指针在函数参数传递中的作用,特别是对于字符数组和多维数组的处理。此外,还讨论了指针数组和字符串常量的使用场景,以及在处理不同长度字符串时的选择。
摘要由CSDN通过智能技术生成

是读 《c与指针》 的笔记
依据个人理解水平而写,详略若不得当还请见谅


数组:

  • 在绝大多数的表达式中:数组名的值是指向数组第一个元素的指针
    例外:

    • sizeof(数组名)返回的是整个数组所占字节而不是第一个指针所占字节
    • &数组名 返回一个指向数组的指针,而不是指向数组第一个元素的指针的指针
  • array [value] = *(array+(value));

    • 指针表示法效率可能大于下标表示法,下标表示法不可能效率高于指针表示法
    • 但下标表示法可维护性高
    • 下表引用实际上只是间接访问表达式的一种伪装形式
  • 声明

    • 声明数组时,同时也分配了一些内存空间
    • 声明指针时,只分配了用于容纳指针本身的空间
  • 数组与函数:

    • 当数组名作为函数参数调用时,传给函数的是指向数组第一个元素的指针
    • 函数收到的是原参数的一份拷贝,所以对其进行操作不会影响实际参数
    • 若想修改原先数组:使用指针参数执行间接访问操作1
  • 字符数组

    • 字符数组:
      • char message[] = {‘H’,‘e’,‘l’,‘l’,‘o’};
      • char message[] = “hello”;
    • 字符串常量:
      • char* message = “hello”;
  • 多维数组

    • 实际为一维数组的一种特型:它的每个元素本身也是一个数组
    • 多维数组作为形参时必须显示指明第二维(和接下去所有维):只有第一维的长度可以被自动计算出来
  • 指针数组

    • int* api[ 10 ];下标优先级高于间接访问,所以这是一个存了十个指向整型的指针的数组
    • 对于存储一系列字符串常量
      • 声明矩阵: char const keyword[][9] = {};
      • 声明指针数组:char const *keyword[] = {};
      • 矩阵适用于长度差不多的一系列字符串,并且无需使用指针
      • 指针适用于层次不齐的字符串,更紧凑
      • 实际上除了巨大的表,两种方法 差别其实很小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值