数组初始化

这篇具有很好参考价值的文章主要介绍了数组初始化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 耗时差不多。

对三种方法的选取:

1for 最浪费时间,不建议(其实memset内部也是用循环实现的,只不过memset经过了严格优化,所以性能更高);

2{0} 可能有移植性问题,虽然绝大多数编译器看到{0} 都是将数组全部初始化为0 但是不保证所有编译器都是这样实现的;

3、综合12 推荐使用memset方法。文章来源地址https://www.toymoban.com/news/detail-625126.html

到了这里,关于数组初始化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数组练习题,数组的动态初始化

    定义一个数组,求和 定义一个数组,统计数组里面一共有多少能够被3 整除的数字: 定义一整数类型数组,如果该数字是奇数,则将当前数字扩大两倍,如果是偶数,则将该数字变成该数字的1/2. 一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,

    2024年02月15日
    浏览(38)
  • C语言字符串初始化详解:用常量字符串进行字符数组初始化

    简介 字符串初始化 用常量字符串 初始化过程 示范代码 结论 在C语言中,字符串被定义为字符数组。字符串的初始化是指将一个常量字符串复制到字符数组中。本文将详细介绍字符串的初始化方法,并提供相应的示范代码。 在C语言中,有几种常用的方法可以用常量字符串来

    2024年02月15日
    浏览(35)
  • C语言二维数组的初始化

    二维数组的初始化可以按行分段赋值,也可按行连续赋值。 例如,对于数组 a[5][3],按行分段赋值应该写作: int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}; 其中,花括号的对数代表行数,方括号中的值的个数代表列数。 按行连续赋值应该写作: int a[5][3]={80,75,92,61,6

    2024年02月04日
    浏览(34)
  • java中初始化数组的方法

    方式一: 注:此种方式创建的数组,如不显式初始化数组元素,则各元素为当前数据类型的默认值。基本数据类型为0,对象类型为null。所以使用前需要将各元素显式赋值。 方式二: 注:此方式与方式一的结果相同,但是更简便。 方式三: 注:此方式与方式一和方式二的结

    2024年02月12日
    浏览(33)
  • 【数组】二分查找(减不减一,看初始化!)

    704. 二分查找 - 力扣(LeetCode) 这道题目的前提是数组为有序数组 ,同时题目还强调 数组中无重复元素 ,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的, 这些都是使用二分法的前提条件 ,当大家看到题目描述满足如上条件的时候,可要想一想是不是

    2024年02月07日
    浏览(38)
  • Python如何创建二维数组和初始化

            严格意义上说,Python中并没有数组的概念,Python中表达一组数据有多种形式,例如list,tuple,set等数据结构都可以表达一组数,并且这组数也没有C和C++中数组的的同质限制,这些数可以是任何一种数据类型。         以list为例(list又叫列表),要想实现一个所

    2024年02月20日
    浏览(39)
  • 嵌入式系统>嵌入式硬件知识

    AI芯片的特点包括 :新型计算范式AI芯片的关键特征: 1、新型的计算范式 AI 计算既不脱离传统计算,也具有新的计算特质,如处理的内容往往是非结构化数据(视频、图片等)。处理的过程通常需要很大的计算量,基本的计算主要是线性代数运算,而控制流程则相对简单。

    2024年02月08日
    浏览(41)
  • C++二维数组的初始化赋值及示例

    C++二维数组可以看作一个表格,横向为表格的行,纵向为表格的列,数组定义时行号在前,列号在后。二维数组的定义格式为: 数据类型  数组名[常量行表达式][常量列表达式] 。 二维数组的元素是按先行后列的顺序存放的,例如,定义一个int a[3][2]的数组,其形式为: a[

    2024年02月12日
    浏览(42)
  • C语言:结构体数组的使用和初始化:

    前文:在C语言中,结构体是经常会用到的自定义数据类型,通常在使用结构体时,我们会进行单一的结构体初始化。但在使用同一个结构体,初始化不同的数据时,则可以用到结构体数组来进行初始化。 结构体数组是指在一个数组中存储多个结构体对象的集合。结构体是一

    2024年02月04日
    浏览(42)
  • ☀️将大华摄像头画面接入Unity 【1】配置硬件和初始化摄像头

    目前的设想是后期采用网口供电的形式把画面传出来,所以这边我除了大华摄像头还准备了POE供电交换机,为了方便索性都用大华的了,然后全都连接电脑主机即可。 这边初始化摄像头需要用到大华的Configtool软件,下载地址如下。 全部-浙江大华技术股份有限公司 (dahuatech

    2024年02月21日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包