佛山市门户网站建设公司,谁能分享个小网站啊,建筑网片多少钱一平方,专门做女性产品的网站C语言中#xff0c;数组初始化的方式主要有三种#xff1a;
1、声明时#xff0c;使用 {0} 初始化#xff1b;
2、使用memset#xff1b;
3、用for循环赋值。 那么#xff0c;这三种方法的原理以及效率如何呢#xff1f; 请看下面的测试代码#xff1a; #define ARR…C语言中数组初始化的方式主要有三种
1、声明时使用 {0} 初始化
2、使用memset
3、用for循环赋值。 那么这三种方法的原理以及效率如何呢 请看下面的测试代码 #define ARRAY_SIZE_MAX (1*1024*1024) void function1()
{ char array[ARRAY_SIZE_MAX] {0}; //声明时使用{0}初始化为全0
} void function2()
{ char array[ARRAY_SIZE_MAX]; memset(array, 0, ARRAY_SIZE_MAX); //使用memset方法
} void function3()
{ int i 0; char array[ARRAY_SIZE_MAX];
for (i 0; i ARRAY_SIZE_MAX; i) //for循环赋值 { array[i] 0; }
} 效率 分别执行上面三种方法统计下平均时间可以得出 for循环浪费的时间最多{0} 与memset 耗时差不多。
对三种方法的选取
1、for 最浪费时间不建议其实memset内部也是用循环实现的只不过memset经过了严格优化所以性能更高
2、{0} 可能有移植性问题虽然绝大多数编译器看到{0} 都是将数组全部初始化为0 但是不保证所有编译器都是这样实现的
3、综合1、2 推荐使用memset方法。