C语言重头越002

前言

此系列记录个人重温与回顾C语言学习中的心得
参考书目: C Primer Plus 第6版

心得

  1. 指向多维数组的指针: int (*pz)[2].该指针对应的数组类型是int zippo[4][2];可以理解为pz存的是zippo第一维度元素的地址,而第一维度元素下的内存空间占有两个int类型的空间.
  2. 声明一个指向N维数组的指针时,只能省略最左边方括号中的值,如:
int ar[][2][3][4]
int (* ar)[2][3][4]
  1. 多维数组与函数结合时,需要注意编译器会自动将数组表示法转换为指针表示法.结合上面关于指针与多维数组的关系可以理解:函数声明中对于指向多维数组的指针的表示法为:
int sum2(int ar[][4], int rows);
  1. 变长数组(VLA).对于第三点中的函数声明只适用于array[][4]这样的数组.当需要处理array1[][5],array2[][6].这样的数组时则需要重写函数.为此引入VLA.
    用变量来定义数组每个维度的大小时,该变量只能是auto存储类别,不能是static与extern.且不能在声明中(包括在函数中声明与作为形参声明时)进行初始化.
    函数中用VLA作为形参时需要注意形参声明顺序
    正确形式
int sum2d(int rows,int cols,int ar[rows][cols]);
//C99与C11允许忽略形参原型中的形参名,此时必须用*号来代替省略的维度
int sum2d(int ,int, int ar[*][*]);

错误形式

int sum2d(int ar[rows][cols], int rows,int cols);
  1. 复合字面量. 是一种常量.且匿名.必须在创建的同时使用它.
\\ 给定大小的初始化
(int [2]){10,20};
\\ 省略大小的初始化
(int []){50,60,90};
\\ 用法1 使用指针记录复合字面量的地址
int * pr;
pr = (int [2]){10,20};
\\ 用法2 函数形参 经典用法 调用函数时,第一个实参为复合字面量,第二个为复合字面量的大小.
int sum(const int ar[],int n);
int total3;
total3 = sum((int []){4,5,6},3);

(更新于21/9/1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值