C++学习之路抓紧跑路版(三)-数组

本文详细讲解了C++中数组的定义、初始化,包括单维数组插入与输出、二维数组的使用,以及指针数组与数组指针的区别。适合初学者理解基本数据结构和内存管理。


前言

今天我们一起来学习一下C++中的数组,包括数组的定义、数组的初始化、数组的应用等等,那么让我们一起愉快的学(pao)习(lu)吧!


一、数组的定义

在我看来数组就是可以存储相同类型数据的集合,例如我有十个人的年龄,他们的数据是一样的,那么我就可以定义一个数组将他们放到一起:

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

可以看出我首先需要声明数组的类型、其次是数组名+元素的个数,其中元素个数必须是大于0的数,后面在加上元素的初始化。


二、数组的初始化

初始化的方式有很多种。可以一个一个的初始化,如:

int age[4];
int age[0]={1};
int age[1]={2};
int age[2]={3};
int age[3]={4};

也可以写在一起,如:

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

要注意初始化的数组的元素数量不能中括号里的数量,若中括号里未生命元素个素数则大括号里初始化了多少元素中括号里的元素个数就是多少,如:

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

则中括号中的元素个数为4个。

数组插入元素和输出

可以循环将数据插入数组并循环输出,如:

#include<iostream>
using namespace std;
int main()
{
	int age[10];
	for(int i = 0;i < 10;i++)
	{
		age[i] = i + 200;
	}
	for(int j = 0;j < 10;j++)
	{
		cout<<age[j]<<endl;
	}
}

输出:

202
203
204
205
206
207
208
209

二维数组

二维数组顾名思义,可以定义两个维度的数组,分别是行和列,如:

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

意思是一共有两行,每行的元素有3个,我们同样可以用for循环嵌套的方式输出,如:

#include<iostream>
using namespace std;
int main()
{
	int age[2][3] = {{1,2,3},{4,5,6}};
	for(int i = 0;i < 2;i++)
	{
		for(int j = 0;j < 3;j++)
		{
			cout<<age[i][j]<<" ";
		}
		cout<<endl;
	}
}

输出:

1 2 3 
4 5 6 

指针数组和数组指针

在这里有一个大家经常弄混的概念就是数组指针和指针数组,其实很好记啦,数组指针就是指向一个数组的指针,指针数组就是装满指针的数组。
指针数组: 在定义的一个数组中的元素存放的全部为指针,例如:

#include<iostream>
using namespace std;
int main()
{
	int a[3] = {1,1,1};
	int b[3] = {2,2,2};
	int c[3] = {3,3,3};
	int *p[3] = {a,b,c};
	for(int i = 0;i < 3;i++)
	{
		for(int j = 0;j < 3;j++)
		{
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
}

输出:

1 1 1 
2 2 2 
3 3 3 

数组指针 :就是指向一个数组的指针,例如:

#include<iostream>
using namespace std;
int main()
{
	int a[4] = {1,2,3,4};
	int (*p)[4];
	p = &a;
	cout<<"a: "<<a<<endl;
	cout<<"p: "<<p<<endl;
	cout<<"*p: "<<*p<<endl;
	cout<<"&a[0]: "<<&a[0]<<endl;
	cout<<"&a[1]: "<<&a[1]<<endl;
	cout<<"p[0]: "<<p[0]<<endl;
	cout<<"p[1]: "<<p[1]<<endl;
	cout<<"*p[0]: "<<*p[0]<<endl;
	cout<<"*p[1]: "<<*p[1]<<endl;
}

输出:

a: 0x7fff687a5180
p: 0x7fff687a5180
*p: 0x7fff687a5180
&a[0]: 0x7fff687a5180
&a[1]: 0x7fff687a5184
p[0]: 0x7fff687a5180
p[1]: 0x7fff687a5190
*p[0]: 1
*p[1]: 1752846992

备注:这里因为涉及到指针所以这部分暂时先写这么多,等我写指针的时候在讲一讲这里的原理。

总结

好了,那么以上就是今天的内容了,希望大家早日学有所成(pao lu you cheng),加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值