首页 > 其他分享 >数组与结构体

数组与结构体

时间:2022-10-23 08:44:23浏览次数:46  
标签:调用 变量 int 数组 结构 定义

前言

先考虑这样的问题:当你被要求定义十个变量时,你会怎么办?可以像 a1,a2,a3··· 这样一个一个的定义出来。但是,当你被要求定义一千个,一万个变量的时候呢?肯定就不能一个一个定义了,这时候,我们就要用到 数组 了。

数组的理解

数组,可以看作是把很多变量 起来,统一一下名字,再重新编个号,这样只需要知道它的名字和编号就可以访问这个变量了。


一、数组的定义

数组的定义方式为:int 变量名[数组大小];,例 int a[b];

其中,b 应该是已知的整数,当 b 比较大时,就应该定义全局变量了,因为局部变量不能定义太大(暂时不讲为什么)。

容易看出,数组是有范围的,以 int a[b]; 为例,其下标的范围是 \([\,0,b\,)\),也就是一个左闭右开的区间。


二、数组调用

数组越界:当下标超出数组的范围时,就会发生数组越界,会发生一些玄学错误。所以,在调用数组时一定要看看是否越界。


三、单独的变量与数组的对比

一般情况下,变量的定义像是下面这样的,比较分散。

int a1,b2,a2,c,d;

\[\require{AMScd} \begin{CD} \qquad a1 @.b2 \\ @. @. \\ a2 @. @. c\\ @.\\ @.d\\ \end{CD} \]

当我们调用时,需要用 a1,b2 这样的语句。
现在我们把它们“串”起来,统一名字并编号,就会变成这样。

int a[5];

\[\require{AMScd} \begin{CD} a[\,0\,] @= a[\,1\,] @= a[\,2\,] @= a[\,3\,] @= a[\,4\,] \end{CD} \]

当我们访问数组时,就可以用 a[0],a[1] 这样的语句来调用数组,是不是方便了很多。另外,这也为循环结构提供了一个意义,就是遍历数组。


四、多维数组

上面所讲的是一维数组,类似的,我们可以把单个变量看作是零维数组,那么一维数组就是由很多个零维数组组成的。类比过来,二维数组就是由很多个一维数组组成\(\ \cdots\)

好,相信你已经能够理解数组了。


结构体

一、结构体的定义与调用


结构体可以看作自己定义一种新的数据类型,里面存储一些原有的数据类型,看起来比较集中。除此之外,结构体还有封装的作用,但这里不多讲。

声明结构体的格式

struct 结构体名{
	你要往结构体里塞的东西,可以是变量也可以是函数;
};

注意! 不要忘了结构体 } 后面的 ;

例如:

struct tree{
	int l,r;
	int sum;
	void upd(){
		sum++;
	}
}a[10],c;
tree b[10];

在这个例子中,我声明了一个叫作tree的结构体,里面有三个int型的变量l,rsum

声明不等于定义,定义一个已声明的结构体有两种方式,例子中都有体现。
第一种是在声明结构体时最后的 }; 之间定义变量。
第二种是像平时定义常见的 int 型那样,把 tree 当做一个数据类型直接定义变量或数组。


二、结构体的调用

结构体在调用时,需要在你定义的变量或数组的某个元素后面加个 .,再加上结构体内部的变量名来实现调用。以刚才定义的结构体为例,可以这样调用:

	a[1].l=1;
	c.r=2;
	a[1].upd();

end

标签:调用,变量,int,数组,结构,定义
From: https://www.cnblogs.com/yangshiyu10/p/16811249.html

相关文章

  • 数据结构栈与队列学习以及刷题总结
    1.栈与队列基本内容(1).栈:栈是一种线性结构,限定仅在表尾进行插入和删除操作的线性表。通过学习栈的性质,我们可以将其形象的想成叠盘子,每一个元素压入栈时都会成为栈顶元......
  • 数组,指针与现代c++标准
    #include<iostream>#include<algorithm>#include<math.h>#include<string>usingnamespacestd;classInfo{public:Info(stringnickname,stringcon......
  • 后台管理系统 数组去重 避免踩坑!
    不要把数组push放进循环中,后果很严重!!!findIndexfiltersome......
  • 4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nums1......
  • 数组访问越界
    一、是什么如果定义了一个有n个元素的数组,那么,对这n个元素(下标为0到n-1的元素)的访问都合法,而对这n个元素之外的空间进行访问,就是非法的,称为“越界“。二、如何避免1)检查传......
  • 容器是否能代替数组
    在.net中,很多开发者都喜欢使用List来代替数组进行使用。容器不仅封装了数组几乎所有的基本操作,而且还可以动态扩容,在开发过程中十分的方便。以下的场景更加建议使用数组:容器......
  • 【leetcode_C++_哈希表_day5】242. 有效的字母异位词&&349. 两个数组的交集&&202.快乐
    C++知识补充:(不完全,仅针对本题用的知识点)1.C++类&对象关键字public确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成......
  • 数组初步认识和使用
    1.作用:可以同时储存多个数据(就是数据的组合)2.数组的特点a.可以储存多个数据,且只能储存相同类型的数据,有我们定义b.数组中储存的个数是固定的,有我们自己定义。3.如何声明一个......
  • 数据结构:数组
    一、是什么数组是一种线性表结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。首先我们需要理解一下这句话,以便于我们更好地理解数组。1.1线性表线性表是n个具......
  • 数据结构_用数组实现环形队列
    思路分析:一、front就指向队列的第一个元素,也就是说,arr[front]就是队列的第一个元素 二、rear就是指向队列的最后一个元素的后一个位置,我们需要空出这个rear指向的空间(......