arrays - 关于 C 数组语法的问题
问题描述
int array[] = {}
int array[length]
为什么我们不需要在第一个语法中加上一个长度?
通过填写 {} 是否设置了数组中已有的值?
解决方案
如果未指定数组大小,则数组长度由初始化程序确定,如下所示:
- 如果数组是字符类型,则初始值设定项可以是字符串文字(“宽”字符类型需要前缀) - 在这种情况下,数组的大小是根据文字的长度计算的,考虑到字符串终止符 (请注意,一个空字符串*不是*一个空初始化器 - 它至少包含一个元素,即终止符本身)
- 否则,数组将使用大括号括起来的初始化器列表进行初始化,并且数组大小计算如下:
- 如果没有指定的形式初始化器,则数组的大小是根据初始化器的数量计算的 - 声明
[ constant-expression ] = initializer
定义int a[] = {1, 2, 3};
a
有 3 个元素; - 如果有一个或多个指定的初始值设定项,则数组的大小是根据最大的指示符*或*初始值设定项的数量来计算的,以较大者为准 - 声明
定义int a[] = {[2] = 3};
a
为有 3 个元素,并且只初始化第三个(前两个被隐式初始化为 0)。
- 如果没有指定的形式初始化器,则数组的大小是根据初始化器的数量计算的 - 声明
数组必须具有非零大小,并且空初始化程序在语法上无效 -初始化程序列表中必须至少存在一个初始化程序。
推荐阅读
- r - 将变量从名称插入文件并连接文件
- javascript - 如果在javascript中的表格行上选中复选框,则更新输入
- javascript - 当我使用 belongsToMany 关联时,Sequelize 中的自动急切加载
- reactjs - 如何通过地图功能仅打开一个模式
- javascript - Firefox 性能和 React
- google-analytics - 在 Google Analytics 中按前 10 天细分用户
- laravel - laravel 中的 @csrf 是否包含在内?
- php - 带有 apache2 和 php-fpm over Unix 套接字的单个 docker 与带有 TCP/IP 套接字的 2 个不同容器(apache2 和 php-fpm)?
- python - Django 自定义命令在没有调试日志的情况下写入文件
- reactjs - 当依赖项之一发生更改时,您能否使 useEffect 仅运行一次,但如果再次更改则不运行?