Hi,技术菌团里刚学数组的小伙伴们,你们数组的基础知识掌握的怎么样呢,本期的数组语言笔记能不能帮到你们呢?数组是一组有序数据的集合。数组中每一个元素都属于同一个数据类型,且不能把不同类型的数据放在同一个数组中。01一维数组

一维数组它的元素只需要用数组名加一个下标,就能唯一确定。

定义一维数组的一般形式为:类型说明符 数组名【常量表达式】

例如:

int a[10];

表示定义了一个整型数组,数组名为a,此数组包含十个整型元素;而且要注意,该数组下标是从0开始的,这10个元素a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。上面的定义呢,就不存在数组元素a[10]。

那么数组名命名规则是什么呢?
其实数组名的命名规则和变量名相同,都遵循标识符命名规则。

数组的定义需要注意什么?
常量表达式可以包括常量和符号常量,例如:

int a[6+8];

该行代码就是合法的。
但需要注意的是不能包含变量。

例如:int a[n]; 这是不合法的。

还有就是,C语言不允许对数组的大小作动态定义,也就是说数组的大小不依赖于程序运行过程中变量的值。

例如:

int n;scanf("%d",&n);int a[n];

上述定义数组的代码是不对的,初学者一定不要犯这样的错误

在定义数组并对其赋值后,就可以引用数组的元素了。
引用数组元素形式如下:数组名【下标】
例如:

int a[10];             //前面有int,这是定义数组,指定数组包含十个元素t=a[6];        //这里的a[6]表示引用a数组中序号为6的元素

为了使程序简洁,常在定义数组的同时给元素赋值,这称为元素的初始化。1. 在定义数组时对全部数组元素赋予数值。例如:

int a[10]={0,1,2,3,4,5,6,7,8,9};

将各元素初值放在一对花括号里,数据间用逗号分隔。2. 可以只给数组一部分元素赋值。例如:

int a[10]={0,1,2,3,4}

上述表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0.3. 如果使一个数组中的全部元素值为0,可以写成:

int a[10]={0,0,0,0,0,0,0,0,0,0}或int a[10]={0};

4. 对全部元素赋初值时,由于数据的个数已经确定,所以可以不指定数组长度。

例如:

int a[ ]={1,2,3,4,5};

02二维元素

二维元素常称为矩阵。

二维数组定义的一般形式:类型说明符 数组名【常量表达式】【常量表达式】
二维数组基本概念与方法和一维数组相似。

二维数组元素的表达形式为:数组名【下标】【下标】

例如,a[2][3] 表示a数组中序号为2的行中序号为3的列的元素。
数组元素可以出现在表达式中,也可以被赋值。

例如

b[1][2]=a[2][3]/2

但要注意的是,在引用数组时,下标值应在已定义的数组大小的范围内。

例如:

int a[3][4];           //定义a为3x4的二维数组……a[3][4]=3;             //不存在a[3][4]元素

在上述定义中,数组a可用的行下标范围在0 ~ 2,列下标范围在0 ~ 3,用a[3][4]表示元素显然超过了数组的范围。

1. 分行给二维数组赋初值。

例如:

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

2. 可以将所有元素都写在一个花括号里,按数组元素在内存里的排列顺序对各元素赋初值。

例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

但该方法和第一种比起来,写起来容易遗漏也不好检查。3. 可以对部分元素赋初值。

例如:

int a[3][4]={{1},{5},{9}};

他的作用只是对各行的第一列(即序号为0的列)的元素赋初值,其余元素自动为0。
也可以对各行的某一元素赋初值,

例如:

int a[3][4]={{1},{0,6},{0,0,11}};

初始化的元素如下:
1 0 0 0
0 6 0 0
0 0 11 0
当然了,也可以对某几行元素赋值:

int a[3][4]={{1},{5,6}};

数组元素为:
1 0 0 0
5 6 0 0
0 0 11 04. 如果对全部元素都赋初值,则定义数组时对第一维长度可以不指定,但第二维长度不能省。

例如:

int a[3][4]={{1},{5,6}};

与下面的定义等价

int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

03字符数组

C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。

用来存放字符数据的数组是字符数组。在字符数组中一个元素内存放一个字符。

例如:

char c[10];c[0]='I';c[1]=' ';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';

由于字符型数据是以整型形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据。

例如:

int a[10];c[0]='a';

对字符数组初始化,把各个字符依次赋给数组中各元素。

例如:

char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};

1. 逐个字符输入输出。用格式符“%d”输入或输出一个字符。

例如:

char str[6];int i;for(i=0;i<6;i++)        scanf("%c",&str[i]);           //字符数组输入for(i=0;i<6;i++)        printf("%c",str[i]);           //字符数组输出

2. 将整个字符串一次输入或输出,用“%s”格式符。

例如:

char str[6];scanf("%s",str);               //字符串输入printf("%s",str);              //字符串输出

由于字符数组名表示的就是数组的首地址,所以以%s的格式输入输出一个字符串时,字符数组名前面不能再取地址符号“&”。

本期语言笔记到这里就结束了,我们下期见!如果有疑问可以在技术菌团官方QQ群(655575022)里讨论咨询。

c++ 数组置0_鸣小亮C语言笔记(5)——数组相关推荐

  1. 8086怎么输出数组_鸣小亮C语言笔记(5)——数组

    Hi,技术菌团里刚学数组的小伙伴们,你们数组的基础知识掌握的怎么样呢,本期的数组语言笔记能不能帮到你们呢?数组是一组有序数据的集合.数组中每一个元素都属于同一个数据类型,且不能把不同类型的数据放在同一 ...

  2. 微信小程序js数组初始化_微信小程序学习Course 3-2 JS数组对象学习

    微信小程序学习Course 3-2 JS数组对象学习 本节主要介绍JS中的数组. 3-2.1 数组的声明 数组声明的方式多种,如下例.一般我们可以先创建一个空数组,然后再填充. var names = ...

  3. c语言设计程序之数组,软考程序员考点C语言程序设计之数组

    下面希赛小编为大家整理的软考程序员考点C语言程序设计之数组,希望能帮助学友们.具体内容如下: 数组 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后 ...

  4. c语言笔记之数组和指针(初学者)

    数组 定义 由数据类型相同的一系列元素组成 size_t arr[index]={ } *当{}内列出元素的值,可以让编译器自己数出数组大小,此时index可省略不写.数组的长度可以用(sizeof ...

  5. c#数组赋初值_【自学C#】|| 笔记 13 数组

    上一章最后讲的是正则表达式做一下总结. 总之就是通过"/d"这样的符号代替数字或字符什么的,然后通过"{n}"这种方式确定重复多少个,再通过"|&qu ...

  6. C语言笔记(数组地址一些细节)

     一.数组的a+1和&a+1的区别 先看看测试代码: 1 int data[10]={}; 2 printf(" sizeof(data) = %d.\n", sizeof ...

  7. c语言二维数组判断几行几列,C语言 二维数组的行列区别

    #include #include /*=============================================================*/ int main() { int ...

  8. c语言中数组结尾的0的作用,C语言里面一个数组最后的\0表示什么意思?

    qq_莫非 #include #include #include #include #include #include #include #include #include #define PORT  ...

  9. C语言 指针和数组区别 - C语言零基础入门教程

    目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...

最新文章

  1. Python基础三--字典,集合,编码,深浅copy,元祖、文件操作
  2. python编写Mysql自动备份脚本
  3. 注意事项:二、sqlserver2008服务配置
  4. CSDN markdown 如何更改文字字体、样式、颜色、大小?
  5. 2021-10-20 Speaking Class
  6. nvcc fatal : Unsupported gpu architecture 'compute_11'
  7. SAP UI5 formatter的原理和调试截图-当UI字段没有值显示时怎么办
  8. 《机器学习概论》习题答案
  9. 前端学习(2649):vue3.0的处理展示
  10. linux 文件的组织,Linux文件组织和目录结构
  11. 即时通讯应用战争开打,到底谁能最终定义我们的交流方式?
  12. Gopher一定要会的代码自动化检查
  13. Span中显示内容过长显示省略号---SpringCloud Alibaba_若依微服务框架改造_前端基于Vue的ElementUI---工作笔记011
  14. treewidget怎么设置某一个item拖动的_如何零基础撸一个专车小程序?看这一文就够了!...
  15. STC12LE5620AD RAM问题
  16. 经典的HTML5游戏及其源码分析
  17. 【转】WinRAR软件许可框
  18. POSTGRESQL 设置hugepage 可以让系统使用内存更有效率,防止OOM
  19. 辰信领创荣获“2016中国IT风云榜”两项大奖
  20. 数据库实践LAB大纲 02 检索

热门文章

  1. Java两个日期相差的天数计算
  2. STM32CubeMX学习——旋转编码器模块
  3. 一个屌丝程序猿的人生(三十五)
  4. deb 中标麒麟_中标麒麟6安装google chrome浏览器遇到的问题及解决
  5. 中标麒麟+QT+达梦数据库
  6. 寒假训练赛复盘2.9
  7. react 搭建本地开发环境
  8. android 7.0 创建热点,win7创建wifi热点脚本分享
  9. 【C++】黑马程序员C++核心编程学习笔记(完结)
  10. python 百度地图api