目录

数组定义不初始化会被随机赋值

数组初始化的几种形式

数组初始化为某一固定值

memset(数组名,值,sizeof(数组名))

fill(begin(),end(),value)


以前刚开始学数组初始化,一直都没搞太清楚,包括参加PAT考试,直到看了胡凡的《算法笔记》,逐渐清晰,是这样的:

  • 数组定义不初始化会被随机赋值

因此如果数组的所有元素在下面没有逐一赋值,但是又会使用到的话,最后不要只定义而不初始化。会带来问题。

  • 数组初始化的几种形式

  1. 可以直接用{}:a[10]={},就可以让a[10]数组中的所有元素全为0;
  2. 也可以{}内包含0:a[10]={},也可以让a[10]数组中的所有元素全为0;
  3. {}内写一个值只会让第一个元素为这个值,后面的依旧是0:a[3]={5},数组实际上被初始化为{5,0,0}
  • 数组初始化为某一固定值

可以将数组初始化为某一固定值。有两种方法,一种是使用<string>(C++)或<string.h>(C)中的memset()函数,还有一种是使用<algorithm>中的fill()函数,fill函数可以初始化容器和数组。

  • memset(数组名,值,sizeof(数组名))

只建议使用memset()的时候初始化为0或者-1。menset()函数的功能性不如fill()函数,其优点在于执行速度更快。

程序实例:

#include <stdio.h>
int main(){int a[10];memset(a,5,sizeof(a));for(int i=0;i<10;i++)printf("%d",a[i]);return 0;
}//output:5555555555
  • fill(begin(),end(),value)

fill()可以把数组和容器中的某一段区间赋值为某个相同的值。和memset()不同的是这里的赋值可以是数组类型对应范围中的任意值。

程序实例:

#include <iostream>
#include <algorithm>
using namespace std;
int main(){int a[10];fill(a,a+5,233);for(int i=0;i<10;i++)cout<<a[i]<<" ";return 0;
}/*
233 233 233 233 233 0 31 0 0 0
--------------------------------
Process exited after 0.4914 seconds with return value 0
请按任意键继续. . .
*/

从这里也可以看出,a[]后面的元素是随机赋值的。

建议采用fill()而不是使用memset()。

C/C++数组初始化的总结相关推荐

  1. C/C++数组初始化的一些误区

    以前我这样初始化一个数组,并自我感觉良好: int a[5] = { 0 }; // 全部初始化为0 这种简单的写法让我非常爽,于是我又想把数组全部初始化为1: int a[5] = { 1 }; / ...

  2. 【C】数组数组初始化总结

    C数组初始化总结 发现一个新方法,可以分段初始化数组 eg:int arrayC[MAX_LEN] = {[1 - 5]=9, [6 - 9] = 8}; 代码如下 #include <stdi ...

  3. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  4. C语言中字符数组初始化的几种方法

    欢迎关注我的微信公众号:CurryCoder的程序人生 1.C语言中的字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. 1.1 直接 ...

  5. 【C 语言】数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )

    文章目录 一.数组本质 二.数组长度定义 三.数组初始化 1.编译时初始化 2.显式初始化 ( 重置内存 ) 一.数组本质 数组本质 : 类型角度 : 从 数组元素 类型角度分析 , 数组是 相同类型 ...

  6. golang二维数组初始化

    golang二维数组初始化来看一下,有点特别 func main() {x := 2y := 4table := make([][]int, x)for i := range table {table ...

  7. 二维数组初始化的形式有?

    二维数组初始化的形式有? 数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 }: 在{ }中给出各数组元素的初值,各初值之间用逗号分开.把{ }中的初值依次赋给各数组元素. 有如下几 ...

  8. c的关于数组初始化 和 memset用法

    今天为了彻底搞定一个关于c中数组初始化和声明不同情况下,比如只声明一个数组char str[20];那么这str里面是什么内容呢?我用vc6++,debug下看到都是-56饿asc码,后来请教了一个华 ...

  9. memset 数组初始化

    void *memset(void *s, int ch, size_t n) 1.功能是: 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值,  第一个值为指定的内存地址, ...

  10. c# 怎样从bitmap初始化image类_C#二维数组初始化概括(新手篇)

    群友反馈的一个问题: 运行报错: 这个主要是数组定义的有问题,二维数组初始化:如下这样 string[,] aaa = new string[10, 10]; 其次得确保data在截取Substrin ...

最新文章

  1. GARFIELD@01-18-2005
  2. 不同的寻址方式的应用——将每行的单词都变成大写
  3. Silverlight Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...
  4. 简洁css竖型tab选项卡(用)
  5. uva10817 dijkstra
  6. 基于python爬虫的论文标题_Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】...
  7. R语言作图入门——软件安装,数据导入
  8. 有向图(3.基于十字链表的c++实现)
  9. 三星手机和计算机如何连接打印机,WIFI当道 手把手教你如何实现无线打印
  10. 网站攻击有哪几种方式?如何处理
  11. java 情感分析_Flink基于Alink中文情感分析示例(Java版本)
  12. html语言怎么换下一行,表格中打字怎么换到下一行
  13. 查询员工的薪水涨幅情况
  14. 笔记本无法找到WiFi信号,需要手动设置wlan autoconfig的解决办法
  15. 使用mockjson-server 搭建 mock-server
  16. 选购kvm需要注意的重要事项
  17. 点、线、圆、矩形、抛物线的类定义_点、圆、球和n维球体积之间有怎样的爱恨情仇?让我们一起扒开他们之间鲜为人知,惊为天人的秘密关系!...
  18. 手机如何连接无线打印服务器,手机如何设置打印服务器的无线WiFi参数?(适用于 B1版)...
  19. 微信小程序开发者工具初体验及实现技术初探
  20. Flie输入输出字节流

热门文章

  1. 隐私保护与隐私计算研讨会 | 余维仁:大数据时代下需要各界更新对个人隐私保护的固有认识
  2. influx db高可用部署方案
  3. 超密集组网(UDN)
  4. JAVA程序员面试30问(附带答案)
  5. 最新全球学术排名出炉:23所中国大学跻身世界前100名!
  6. ARM主板跑java_在ARM Cortex-M3上编写一个简单的C任意代码执行漏洞?
  7. 必看!德国双元制教育超全面科普→
  8. MySQL-条件查询
  9. 带有滚动效果的ViewPager
  10. 易买网更多新闻代码_新闻 | 1022Bewhy结婚等更多资讯