c 有意思的数组初始化
2015-09-04 12:34
316 查看
c 有意思的数组初始化
#include <stdio.h>
int main()
{
int i = 0;
char a[1024];
char a0[10] = {};
char a1[10] = {1};
char a2[10] = {1,};
char a3[10] = {1,1};
for(i=0; i< 1024; i++){
printf("%u",a[i]);
a[i] = (i*i)%11;
}
printf("\n------\n");
for(i=0; i< 10; i++){
printf("%u | %u | %u %u\n", a0[i], a1[i],a2[i], a3[i]);
}
printf("\n");
}
结果
0000000042949672804
------
0 | 1 | 1 1
0 | 0 | 0 1
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
运行第一次和这个可能不一样,从第二次以后就一样了。
1 ,a[10]; 只是做个标号,并不分配内存,到a[0]=(1*1)%11时分配内存,只不过是在栈的数据段找个地址赋给a,不做初始化;
2,a?,都做了初始化0,并且在a123都对指定的位置赋了给定的值。
3,亮点是a0={}的写法,我第一次尝试到,估计这根编译器有关。
#include <stdio.h>
int main()
{
int i = 0;
char a[1024];
char a0[10] = {};
char a1[10] = {1};
char a2[10] = {1,};
char a3[10] = {1,1};
for(i=0; i< 1024; i++){
printf("%u",a[i]);
a[i] = (i*i)%11;
}
printf("\n------\n");
for(i=0; i< 10; i++){
printf("%u | %u | %u %u\n", a0[i], a1[i],a2[i], a3[i]);
}
printf("\n");
}
结果
0000000042949672804
------
0 | 1 | 1 1
0 | 0 | 0 1
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
0 | 0 | 0 0
运行第一次和这个可能不一样,从第二次以后就一样了。
1 ,a[10]; 只是做个标号,并不分配内存,到a[0]=(1*1)%11时分配内存,只不过是在栈的数据段找个地址赋给a,不做初始化;
2,a?,都做了初始化0,并且在a123都对指定的位置赋了给定的值。
3,亮点是a0={}的写法,我第一次尝试到,估计这根编译器有关。
相关文章推荐
- C 文件直接包含
- [面试技巧]16个经典面试问题回答思路
- 一种不能删除文件的情况分析过程
- 内核编程实例,多文件的Makefile
- c 有意思的数组初始化
- C 文件直接包含
- [面试技巧]16个经典面试问题回答思路
- HTML5本地存储:SessionStorage, LocalStorage, Cookie
- JS实现横向拉伸动感伸缩菜单效果代码
- 解决MySQL链接不上问题
- Hello JSP!——<jsp:forward>动作元素篇
- unix 管道的实现
- android从网上加载图片简单示例
- puppet函数 多层路径转换数组
- HDU1034 - Candy Sharing Game (简单模拟)
- HDU 3016 Man Down
- web.py 十分钟创建简易博客
- hdoj 3996 Gold Mine 【最小割 之 最大权闭合图】
- 2015年acm省赛
- 2014完美世界校招笔试题及答案