C++学习——数组和字符型数组

基本知识

定义:有限个同类型变量的无序集合

 数组名:集合的名称

 数组元素:组成数组的各个变量

  数组元素在内存中是连续分配的,一个元素与首元素的位置差值 称为该元素的下标

 数组长度:元素的个数

 特点:随机访问,通过数组名和下标可以快速定位到该下标对应的位置,操作该数组元素

数组的定义格式与内存分配

声明数组名、数组类型、元素个数

格式:数据类型 数组名【数组长度】

①数据类型:数组中元素的数据类型,所有元素都是同一数据类型

②数组名:一组连续存放于内存的数据的首地址(起始地址)

③系统按照定义的数据类型和数组长度分配一段连续的内存空间,数组名对应首地址通过数组名以及数组元素的下标操作具体的元素

④数组在程序运行中不能改变数组所占内存大小,因此要在定义时留出足够大的数组长度

⑤程序中多处用到数组长度,因此一般将数组长度用const声明为符号常

Const int N = 5

Int a[N]

C++学习——数组和字符型数组_第1张图片

数组定义的长度与实际元素的个数规定数组长度必须是整型常量,在实际应用中,必须先定义一个较大的数组,然后用一个变量定义数组的实际长度,通过更改变量的值来控制数组元素的实际个数。

Int N = 100;

Int a[N]; //分配了100个int型的内存单元 0~99

Int n = 10;//实际操作0~9元素,后面的90个元素空闲,是随机值或0

Int n = 20;

当n==N时,数组已满,不能再增加元素

一维数组的初始化

格式:数据类型 数组名【数组长度】={初始化列表};

初始化列表中的值用逗号分开,按顺序写入数组的元素中,初始化有多种方式

①数组元素全部初始化:int a[5]={1,2,3,4,5}

②数组元素部分初始化:int[5]={1,2,3}剩余的两个元素值为0

不指定元素个数,根据初始值列表中的元素个数确定数组的长度,int a[]={1,2,3,4,5}, 数组长度为5

数组元素的使用

数组中的每个变量称为数组元素,每个数组元素与数组名(首地址)的距离称为下标。数组元素的表示形式是“数组名【下标】”称为下标法

注意:①数组长度为5,则数组元素下标为0、1、2、3、4,数组长度为N,数组下标 的最小值是0,最大值是N-1,一旦超出范围,则成为越界,编译器检查不出来,但是 运行时会出现异常。

②【】存在两种用法。一:在定义时,定义数组大小,指明数组中包含多少元素,系统分配多大内存。二:代表具体数组元素,a[0]、a[1]表示不同数组元素(变量)一般使用循环访问数组元素

数组的输入与输出:数组名代表一组连续存储的变量的首地址,数组的输入与输出都是对一组相同类型的数据(数组元素)的操作,要使用循环语句

Const int N = 10;

Int a[N];

数组的输入语句

For(int i=0;i

  Cin>>a[i];

数组的输出语句

For(int i=0;i

  Cout<

C++学习——数组和字符型数组_第2张图片

一维数组与函数

一维数组作为函数的形参:至少要有两个参数①数组的形参定义,与声明数组类似,但是不用写长度Int[]表示一个包含若干个int型元素的数组②数组的长度定义,是一个int型变量

输出int型数组下标为0~n-1的元素的值

Void output(int a[],int n)

{

For(int i=0;i

Cout<

}

调用语句如下:

Int a[5]={1,2,3,4,5};

Output(a,5);

函数的址传递:使用简单变量作为参数是值的传递;数组作为参数时,是将数组元素的内存地址传给函数的形参,因此函数内部的形参通过实参的首元素地址和下标找到实参元素,是地址引用

地址在计算机中又称为指针,形参是保存地址的变量,称为指针变量

函数定义内部修改形参数组的元素值,实际上修改的是实参数组的值

形参是数组时,一般第一个实参是数组名,第二个实参是数组实际长度n,表示从数组 的首元素开始操作的所有值。

实参也可以是数组中的任何一个地址,形参数组从实参地址开始,访问实参的n个元

注:形参的数据类型必须与与实参的数据类型相同

因为形参是通过地址的值访问实参的数组元素,地址+1指的是地址+1*sizeof(数组 元素的数据类型),计算机中不同数据类型的内存大小及存储方式不同,必须保证 两者采用相同的数据类型

注意:数组越界问题

切记数组的实际长度,可以增加限定条件判断数组是否已满,是否访问越界,不访问数组之外的内存区域

C++学习——数组和字符型数组_第3张图片

C++学习——数组和字符型数组_第4张图片 

C++学习——数组和字符型数组_第5张图片

C++学习——数组和字符型数组_第6张图片

C++学习——数组和字符型数组_第7张图片

字符数组与函数:

  1. 字符数组作为函数的形参

遍历数组时,不需要利用数组长度,而是判断元素的值等不等于‘\0’

字符串数组作为函数的参数时,一般只需要字符数组形参变量即可,调用时实参使用 字符数组首地址或者字符串

#include
using namespace std;
int length(char s[]);
int main()
{
	char str[]="hello";
	cout<

如果要执行cout<abc)语句,编译会出现错误警告:在C++中“abc是字符串 常量,不能自动转换为字符数组

1)将实参abc强制转换为字符数组 cout<abc);

2)修改length函数的形参变量为const字符数组: int length(const char s[])

 2.数组作为函数的返回值

函数的返回值可以是基本的数据类型,也可以是一个地址形参数组的值实际上是实参 数组元素的首地址。如果要返回数组,使得函数返回值是数组的首地址,就可以实现将 函数表达式作为另一个函数调用的实参功能

数组作为函数的返回值时,函数定义及函数声明的返回值类型是:

数据类型*

调用函数时,函数表达式可以写到其他表达式中,或作为函数的实参

 

字符串与数值型的转化 

  1. 数值转换为字符串的函数:通过std命名空间中cstdlib文件库可以将证书和浮点数转换为字符串存放
  • 整数转换为字符串函数

    Itoa整型转换为字符串

   ltoa长整型转换为字符串

ultoa无符号长整型转换为字符串

三个函数原型相同 第一个参数:要转换的数值

 第二个参数:用于保存转换后的字符串的字符数组首地址

 第三个参数:转换的基数 例:十进制的技术就是10

  • 浮点数转换为字符串的函数

使用gcvt函数将浮点数转换为字符串

第一个参数:要转换的数值

  第二个参数:有效数字位数 如果位数过小用科学计数法表示

第三个参数:用于保存转换后的字符串的字符数组的首地址

注意:字符数组足够大

2.字符串转换为数值的函数cstdlib中有字符串转换为数值的函数

Atoi 字符串转换为整数

atof字符串转化为浮点数

仅包含一个参数,是字符数组的首地址

3.用C语言的通用函数实现数值与字符串的转化P191-192

Sprantf

sscanf

#include
#include
using namespace std;
int main()
{
	int n=12345;
	char a[10];
	itoa(n,a,10);//整型转换为字符串 
	cout<
#include
using namespace std;
int main()
{
	double f=123.45;
	char a[10];
	gcvt(f,5,a);//将浮点型转换为字符串 
	cout<
#include
using namespace std;
int main()
{
	char a[10]="3456.46";
	int na;
	na=atoi(a);
	cout<

你可能感兴趣的:(C++基础知识,大一下,笔记,c++)