对同一个数组进行多次初始化
2017-11-08 17:09
169 查看
int a[]={4,9,1,8,[0]=5,7};
Q:上述声明是否合法?若合法,数组长度是多少?
A:这个声明是合法的。下面是它的工作原理:
编译器在处理初始化列表时,会记录下一个待初始化的数组元素位置。正常情况下,下一个元素是刚被初始化的元素后面的那个。但是,当列表中出现初始化式时,下一个元素会被强制为指示符对应的元素,即使该元素已经被初始化过。下面逐步分析编译器处理数组a的初始化式的操作:
用4初始化元素0,下一个待初始化的元素是1;
用9初始化元素1,下一个待初始化的元素是2;
用1初始化元素2,下一个待初始化的元素是3;
用8初始化元素3,下一个待初始化的元素是4;
[0]指示符导致下一个元素是元素0,所以用5初始化元素0(替换先前存储的4)。下一个待初始化的元素是1;
用7初始化元素1(替换先前存储的9)。下一个待初始化的元素是2(跟本例不相关,因为已经到达列表的末尾)。
最终的效果为:
int a[]={5,7,1,8}; 因此长度为4.
相关文章推荐
- C Primer plus 10.2 初始化一个double类型的数组,然后把该数组的内容拷贝至3个其它的数组中,使用带数组的表示方法的函数进行第一份拷贝,使用带指针表示方法和指针递增的函..
- 使用随机函数初始化一个数组,并对数组进行排序(冒泡排序法和选择排序法)
- 【C语言】将一个数组进行初始化、清空、逆序、显示。
- 如何初始化一个指针数组
- 创建一个数组,实现函数init()初始化数组,实现empty()清空数组 实现reverse()函数完成数组元素的逆置
- 创建一个数组,实现初始化、逆置和清空
- 那些年我们刷过的算法题(排序)---有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序
- 对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间。原数组为:A,B,C,D,E, 现给定新的位置为3, 0, 1, 4, 2那么排序为D,A,B,E,C
- 定义数组为有序数组模型,并利用二分法进行查找,删除特定值(缺点:只能删除一个值,若有相同的值,则删除第一个)
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- Java中对一个数组中的数字进行排序
- [struts]Validator对一个集合(list,数组)进行较验
- 初始化一个多维数组
- 解决一个OCX多次实例化时加载不同的初始化界面
- 将一个字符串数组的元素的顺序进行反转(C#)
- 一个int数组内存初始化的讨论
- 定义一个交通工具(Vehicle)的类,在测试类Vehicle中的main()中实例化一个交通工具对象,通过方法给它初始化speed,size的值,并打印出来。另外,调用加速,减速的方法对速度进行改变
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值