数组

数组就是在内存空间中,开辟一个大的空间,然后再将这个大的空间均的分为若干份的小空间,每个小空间用来保存一个数据.

1). 数组的专业术语:

长度:指的能存放数据的个数

下标/索引:每一个数据所在小空间的编号

元素:每个小空间里面实际存放的数据

2). 数组的声明和赋值

A.声明

类型 数组名[要保存的数据的个数];

例: int scores [5];               //代表一个保存了五个int类型数据的数组,数组名为scores;

char chs [5];               //代表一个保存了五个char类型数据的数组,数组名为chs;

float fs [5];                   //代表一个保存了五个float类型数据的数组,数组名为fs;

B.赋值

a.对声明完成的数组进行逐一赋值

数组名 [下标] = 数据;

例:int scores[5];

scores[0] = 100;                  //为下标为0的元素赋值为100

scores[1] = 1;

…………

scores[4] = 100;

  注:数组的下标总是从0开始,下标最大的数为数组的长度减1;

b.在数组声明的时候就初始化

语法

1.

类型 数组名[长度] = {数据1,数据2,数据3,…..数据n};

注:长度有多少个,数据就写多少个

例: int scores [5] = {90,93,23,54,65}; // 数据会从0开始依次赋值

2.

类型 数组名[] = {数据1,数据2,数据3,…..数据n};

注:编译器会自动根据右边花括号中得数据个数确定你数组的长度

例: int scores [] = {90,93,23,54,65}; // 长度为5

char chs [] = {'a','b','c'}; //长度为3

     3.

类型 数组名[5] = {数据1,数据2};//数据不足5个

例: int scores [] = {90,93}; // 这样赋值,只有下标0和1有值,分别是90和93,其他元素没有值,系统会为这些没有没有值的元素初始化为0

注:部分初始化的话,其他没有赋值的元素会被初始化为0

     4.

类型 数组名[5] = { [4] = 数据,[3] = 数据,[2] = 数据,[1] = 数据,[5] = 数据};            //这种是人为的指定给下标为几的元素赋值

例: int scores [5] = {[4] = 45,[3] = 67,[2] = 89,[1] = 27,[5] = 86};

注:很少这样用

3). 数组的取值

语法:        数组名 [下标];

例:   nums [0]; //取的下标为0的元素    也是就是数组种第一个数据

          nums [3]; //取的下标为3的元素   也就是数组中第四个数据

4). 遍历数组

就是代表循环这个数组依次的访问每个元素

    例:

int scores [5] = {89,76,88,50,99}

for(int i = 0;i < 5; i++){

printf(“%d\n”,scores[i]);// i的值依次是0,1,2,3,4,刚好对应上面访问的下标

        }

5). 数组的越界

越界:就是访问了不属于自己的空间,可能会造成无法预知的后果,要么就是破坏了别的数据,要么就是运行报错

例: int scores [5] = {89,76,88,50,99}

scores[10] = 200;               //越界了

6). 数组长度的公式

数组占用的总字节数 / 每一个元素占用的字节数 = 小空间的个数(数组的个数)

sizeof(数组名)  /  sizeof(数组类型)

       注:sizeof不是函数,是运算符

7). 数组作为函数的参数   **********

声明数组的时候是必须写长度的,但是把数组作为函数的参数时,定义形参的时候,可以不写长度,代表所有长度同类型的数组都可以传过去.

注:在C语言中,除了数组以外,都是值传递,而数组的传递是引用的传递,所以形参的值发生变化,实参的值也会发生改变;但是数组的元素就是一个普通的变量,所以如果是数组的元素作为函数的参数时,同样是值传递;

C语言之数组的更多相关文章

  1. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  2. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  3. go语言的 数组、slice、map使用(转)

    golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...

  4. go语言 类型:数组

    在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...

  5. C语言基础--数组及相关

    概念: 一堆相同类型的数据的有序集合 格式: 元素类型  数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...

  6. 学习C语言的数组

    C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...

  7. 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...

  8. c语言中数组相关问题

    c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

  9. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  10. C语言入门(16)——C语言的数组

    和结构体类似,数组也是一种复合数据类型,它由一系列相同类型的元素组成.C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必 ...

随机推荐

  1. 权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)

    权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net) 一.前言 至毕业后一直在做企业Web开发,做过的项目也有不少,每个项目的框架设计都不是一样,但是每个项目的权限模 ...

  2. - C#编程大幅提高OUTLOOK的邮件搜索能力!

    原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...

  3. APUE学习笔记(1):APUE运行环境

    APUE全称<Advanced Programming in the UNIX Environment>(UNIX环境高级编程) 书中例子大都使用作者自己写的头文件,所以需要解决一下,还好 ...

  4. openwrt构建过程探索

    参考网站:http://wiki.openwrt.org/doc/howto/buildroot.exigence 需要下载必要的库文件,编译器等... 1 首先要获得openwrt的源码,参考ope ...

  5. &lt;图形图像,动画,多媒体&gt; 读书笔记 --- 力学行为特性

    UIKit力学行为包括了:重力(UIGravityBehavior),碰撞(UICollisionBehavior),吸附(UIAttachmentBehavior),推(UIPushBehavior ...

  6. LinQ—扩展方法

    概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提 ...

  7. wpa_cli P2P 连接相关的调试命令

    在最近的一次客户端上的调试p2p的wifi display, 他们中的一半Android该调整了,整个前所以没有太多的研究p2p过程连接, 客户现在使用的非Android平台架构. 需要协助客户这么多 ...

  8. cocos2d-x的TestCpp分析

    最近,我刚开始学coco2d-x 我会写我的学习经验来 首先TestCppproject有许多例子文件夹,而在这些文件夹以外的其他文件 .我首先研究这些文件: controller.h/cpp:管理方 ...

  9. 最佳新秀Java(22)——再次了解泛型

    仿制药Java SE 1.5新功能.通用自然是参数化类型.即操作数据类型被指定为一个参数.这样的参数类型可以在课堂上使用.创建的接口和方法,他们被称为通用类..泛型方法. Java语言引入泛型的优点是 ...

  10. Javascript多线程引擎(九)

    Javascript多线程引擎(九)--垃圾回收 垃圾回收这个话题对Programer来说是非常老旧的话题, 从手动的malloc/free 到半自动的 引用计数 再到全自动的 mark-sweep ...