<1>前言

大家首先来思考一个问题,若是我们想要定义两个变量,求这两个数的平均数,该怎么求呢?

例如:int a = 10,b = 20

int average = (a + b) / 2;

上面的公式,我相信大家应该很快就能够求出来。

若是,我们想要定义5个变量,求他们的平均值呢?

我们是不是要这么写?

Int a = 1,b = 2,c = 3,d = 5,e = 5;

我相信这样写,大家应该也能求出来。不过,大家这个时候,应该会感觉到比较麻烦了,我们定义了太多的变量了。若是我们要求100个变量的平均数的话,那么岂不是我们要定义100个变量。这样,我想要是没有耐心的同学,肯定早就不干了吧!因此,我们聪明的程序员提出来一个叫做数组的概念。

<2>数组的概念

数组:我们把相同数据类型变量的集合称为数组。

<3>定义方式

数据类型  变量名[数组元素的个数]

例如:int a[5];//我们定义了5个int类型的元素。

<4>内存中的排序

int a[5];

 

由上图,我们可以看出:

<1>数组中共有5个元素,a[0],[1],a[2],a[3],a[4]

<2>数组的第一个下标为0,最后一个下标为数组元素个数-1

<3>数组中每个成员的大小:数组组中每个成员的大小,取决于数组元素的数据类型,此时数组成员的大小:4byte(一个int类型大小)

<4>整个数组的大小=一个数组成员的大小*数组元素的个数

即:4 * 5 = 20;

或者 sizeof(数组名),可得数组的大小

注意:数组的数组名标示数组首元素的首地址。

以int a[5]为例, 数组首元素为a[0],则它的地址为&a[0],故a 其实标示了&a[0].

思考:我们怎么理解a[0],a[1],a[2],a[3]?

a<===>&a[0]

a[0] =====>表示数组名a没有偏移,然后去对应地址中的数据。

a[1]======>表示a偏移了一个地址 1 个数组元素数据类型的大小,然后取该地址中的数据

a[2]======>表示a偏移了一个地址 2个数组元素数据类型的大小,然后取该地址中的数据

实例代码:

 

运行结果:

 

C语言中数组定义方式的更多相关文章

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

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

  2. js便利关联数组 及数组定义方式 分类

    "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=& ...

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

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

  4. C语言中宏定义(#define)时do{}while(0)的价值(转)

    C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...

  5. c 语言中宏定义和定义全局变量的区别

    宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...

  6. C语言中数组长度不能用变量定义吗?

    C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数.没有申请的空间系统是不允许读写的.那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小 ...

  7. c语言中数组的定义和java中数组定义的一些区别

    感谢原文:https://blog.csdn.net/gzwdz778/article/details/79799408 一维情况下: c中,数组的声明需要给出数组的维数,比如: int arr[5] ...

  8. C语言中数组与指针的异同之处!你不知道的编程奥秘~

    C语言的数组和指针一直是两个容易混淆的东西,当初在学习的时候,也许为了通过考试会对指针和数组的一些考点进行突击,但是很多极其细节的东西也许并不是那么清楚.本篇侧重点在于分析数组与指针的关系,什么时候数 ...

  9. C语言中内存对齐方式

    一.什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问, ...

随机推荐

  1. JS数组与对象的遍历方法大全

    本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ...

  2. mybatis 一对多 id标签作用

    一对多 MyBatis的resultMap只用于配置结果如何映射,id的唯一作用就是在嵌套的映射配置时判断数据是否相同,当配置id标签时,MyBatis只需要逐条比较所有数据中id标签字段值是否相同即 ...

  3. web容器向jar中寻找资源

    示例代码下载地址 https://files.cnblogs.com/files/Mike_Chang/web%E5%AE%B9%E5%99%A8%E5%90%91jar%E4%B8%AD%E5%AF ...

  4. frame shiro 认证示例及原理简述

    shiro 认证流程 1.创建一个 javaSE 的maven项目(quickstart),并添加依赖 <dependency> <groupId>junit</grou ...

  5. sql in interview for a job

    1.mysql下建表及插入数据 /* Navicat MySQL Data Transfer Source Server : mysql Source Server Version : 50640 S ...

  6. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  7. C#判断奇偶数的函数

    // 现代流行的"程序员"public static bool IsOdd(int n) {     while (true)    {        switch (n)     ...

  8. Ubuntu16.04安装redis和php的redis扩展

    安装redis服务 sudo apt-get install redis-server 装好之后默认就是自启动.后台运行的,无需过多设置,安装目录应该是  /etc/redis 启动 sudo ser ...

  9. December 03rd 2016 Week 49th Saturday

    By failing to prepare, you are preparing to fail. 不做准备,那就准备失败吧. How does the case when you had prepa ...

  10. UserUI程序实现过程简述

    1.__tmainCRTStartup 2. mainret = _tWinMain( (HINSTANCE)&__ImageBase, NULL, lpszCommandLine, Star ...