提示:c++基础学习第二天(数组,函数)
文章目录
- 1、数组
- 1.1、 概述
- 1.2、一维数组
- 1.2.1、一维数组定义方式
- 1.2.2、一维数组名称的用途.
- 1.3、 二维数组
- 1.3.1、二维数组定义方式
- 1.3.2、二维数组数组名的用途
- 2、函数
- 2.1、概述
- 2.2、函数的定义
- 2.3、函数的调用
- *2.4、值传递
- 2.5、函数的常见样式
- *2.6、函数的声明(声明要在调用前)
- *2.7、函数的分文件编写
1、数组
1.1、 概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个放据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
1.2、一维数组
1.2.1、一维数组定义方式
维数组定义的三种方式:
1.数据类型
数组名[数组长度];
//给数组中的元素进行赋值
//数组元素的下标是从0开始索引的
2.数据类型
数组名[数组长度]={值1,值2…};
//如果在初始化数据时候,没有全部填写完,会用0来填补剩余数据
3.数据类型
数组名[]={值1,值2…};
//定义数组的时候,必须有初始长度
//int arr[];是错误的
1.2.2、一维数组名称的用途.
1.可以统计整个数组在内存中的长度,sizeof(arr);
2.可以获取数组在内存中的首地址,cout<<arr<<endl;
数组名(arr)是数组的首地址,arr[0]代表的是数组的元素。
//1、可以通过数组名统计整个数组占用内存大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;
cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;
cout << "数组中元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
//2、可以通过数组名查看数组首地址
cout << "数组首地址为(十六进制):" << arr << endl;
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl;
cout << "数组中第二个元素地址为:" << (int)&arr[1] << endl;
//数组名是常量,不可以进行赋值操作
//arr = 100;
1.3、 二维数组
二维数组就是在一雄数组上,多加一个雄度。
1.3.1、二维数组定义方式
二维数组定义的四种方式:
1.数据类型 数组名[行数][列数];
2.数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};
3.数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4};
4.数据类型 数组名[][列数]={数据1,数据2,数据3,数据4};//行数可以省列数不可以省。
建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性
int arr1[2][3] ={
{1,2,3},
{4,5,6}
};
for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++){cout << arr1[i][j] << " ";}cout << endl;
}
int arr2[][3] = {1,2,3,4,5,6};
for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++) {cout << arr2[i][j] << " ";}cout << endl;
}
1.3.2、二维数组数组名的用途
查看二维数组所占内存空间
获取二维数组首地址
arr3代表的是二维数组的首地址,arr3[i]代表的是第i行的首地址,
&arr3[0][0]代表的是第i行,第j列的地址。
//1、可以查看占用内存空间大小
int arr3[2][3] = {
{ 1,2,3 },
{ 4,5,6 } };
cout << "二维数组占用内存空间为:" << sizeof(arr3) << endl;
cout << "二维数组第一行占用内存为:" << sizeof(arr3[0]) << endl;
cout << "二维数组第一个元素占用内存为:" << sizeof(arr3[0][0]) << endl;
cout << "二维数组行数为:" << sizeof(arr3) / sizeof(arr3[0]) << endl;
cout << "二维数组列数为:" << sizeof(arr3[0]) / sizeof(arr3[0][0]) << endl;
//获取二维数组首地址
cout << "二维数组首地址为:"<<(long)arr3<<endl;
cout << "二维数组第一行首地址为:"<<(long)arr3[0]<<endl;
cout << "二维数组第二行直地址为:"<<(long)arr3[1]<<endl;
cout << "二维数组第一个元素首地址:"<<(long)&arr3[0][0]<<endl;
cout << "二维数组第二个元素首地址:"<<(long)&arr3[0][1]<<endl;
2、函数
2.1、概述
作用:将一段经常使用的代码封装起来,减少重复代码
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
2.2、函数的定义
函数的定义一般主要有5个步装:
1、返回值类型
2、函数名
3、参数表列工
4、函数体语句
5、return表达式
语法:
返回值类型 函数名(参数列表){函数体语句return 表达式
}
2.3、函数的调用
功能:使用定义好的函放
语法:函数名(参数)
int a = 10, b = 20;
// a和b称为实际参数,简称实参
// 当调用函数时么,实参的值会传递给形参
int c = add(a, b);
cout << "c:" << c << endl;
// 定义加法函数
// 函数定义的时候,参数列表的num1和num2并没有真实的数据,
// 他只是一个形式上的参数,简称形参
*2.4、值传递
- 所谓值传递,就是函数调用时实参将数值传入给形参
- 值传递时,如果函数的形参发生变化,并不会影响实参
- 如果函数不需要返回值,声明的时候可以写void
2.5、函数的常见样式
常见的函数样式有4种
1.无参无返
2.有参无返
3.无参有返
4.有参有返
*2.6、函数的声明(声明要在调用前)
作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数的声明可以多次,但是函数的定义只能有一次
提前告诉编译器函数的存在,可以利用函数的声明
*2.7、函数的分文件编写
作用:让代码结构更加清晰
函数分文件编写一般有4个步骤
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
5.在源文件(#include <源文件名>)中关联源文件对应的头文件,并在头文件中声明源文件用到的文件(例如:#include )或常量等(例如using namespace std;)