C语言中数组定义方式
<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语言中数组定义方式的更多相关文章
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
- js便利关联数组 及数组定义方式 分类
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=& ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
- C语言中宏定义(#define)时do{}while(0)的价值(转)
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...
- c 语言中宏定义和定义全局变量的区别
宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...
- C语言中数组长度不能用变量定义吗?
C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数.没有申请的空间系统是不允许读写的.那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小 ...
- c语言中数组的定义和java中数组定义的一些区别
感谢原文:https://blog.csdn.net/gzwdz778/article/details/79799408 一维情况下: c中,数组的声明需要给出数组的维数,比如: int arr[5] ...
- C语言中数组与指针的异同之处!你不知道的编程奥秘~
C语言的数组和指针一直是两个容易混淆的东西,当初在学习的时候,也许为了通过考试会对指针和数组的一些考点进行突击,但是很多极其细节的东西也许并不是那么清楚.本篇侧重点在于分析数组与指针的关系,什么时候数 ...
- C语言中内存对齐方式
一.什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问, ...
随机推荐
- 深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)
相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...
- 通过html导出PDF如何分页
每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{page-break-inside:avoid;} <div class="pd ...
- 相关与卷积(数字信号处理)的数学原理及 Python 实现
数学原理 在数字信号处理中,相关(correlation)可以分为互相关(cross correlation)和自相关(auto-correlation). 互相关是两个数字序列之间的运算:自相关是单 ...
- SQL Server 索引知识-结构,实现
索引的作用毋庸置疑,但他是如何组织,并实现提高语句访问效率的呢?本篇文章为大家做个详细的介绍. 聚集索引架构 B-tree 如图1-1 a.B-tree的结构,叶子节点为数据.数据按照聚集索引键有序排 ...
- laravel session的几个特点
1. 只要访问了网站,就会创建一个临时的session 2.用户登录后sessionid就会发生变化 3.在这期间,即使使用4g网络,ip地址会不断发生变化,只要cookie中包含了sessionid ...
- django项目设计
我们以前是只建立一个项目只建立一个app,如果我们要建立多个app的时候 并且这个app要写很多额视图的函数views内函数,要是建立很多种的时候就会造成很冗杂,不美观 我们未来增强解耦性,就把那个 ...
- [原创]获取JS数组最大值、最小值
核心关键 JS有Array数组对象,使用prototype内置属性扩展,增加Array数组max().min()方法 具体代码 //最小值 Array.prototype.min = function ...
- ZT 内地20年经典电视剧大全
内地20年经典电视剧大全 片尾曲:<故事就是故事> 演唱:戴娆 我听爷爷讲了一个故事 故事里的事是那昨天的事 故事里有好人也有坏人 故事里有好事也有坏事 故事里有多少是是非非 故事 ...
- 玩Web虎-运行时受保护文件不可复制
1. 直接复制粘贴,提示“操作无法完成,因为文件已在system中打开” 2.拔下加密锁后,复制粘贴,依然上错 3.用NoVirusThanks的 kernel-mode driver loader ...
- 【bzoj 4589】Hard Nim
题目 根据我为数不多的博弈知识我发现需要求多少种方案使得异或和为\(0\) 非常显然就是构造出那个质数多项式\(F\),答案就是\(F^n(0)\),当然这里是异或卷积 于是美滋滋的敲上去一个多项式快 ...