专业的丹徒网站建设,php备份网站,海口网站建设费用,互联网公司排名类比二维数组
定义方式#xff1a;
1、数据类型 数组名[行数][列数];
2、数据类型 数组名[行数][列数]{{数据1,数据2},{数据3,数据4}};
3、数据类型 数组名[行数][列数]{数据1,数据2,数据3,数据4};
4、数据类型 数组名[][列数]{数据1,数据2,数据3,数据4};
建议#xff1a;以…二维数组
定义方式
1、数据类型 数组名[行数][列数];
2、数据类型 数组名[行数][列数]{{数据1,数据2},{数据3,数据4}};
3、数据类型 数组名[行数][列数]{数据1,数据2,数据3,数据4};
4、数据类型 数组名[][列数]{数据1,数据2,数据3,数据4};
建议以上4种定义方式利用第二种更加直观提高代码的可读性
int main0() {//方式1//数据类型 数组名[行数][列数];int arr[2][3];arr[0][0] 1;arr[0][1] 1;arr[0][2] 1;arr[1][0] 1;arr[1][1] 1;arr[1][2] 1;for (int i 0; i 2; i) {for (int j 0; j 3; j) {cout arr[i][j] ;}cout endl;}//推荐更直观可读性强//方式2//数据类型 数组名[行数][列数]{{数据1,数据2},{数据3,数据4}};int arr2[2][3] {{1,2,3},{4,5,6}};//方式3//数据类型 数组名[行数][列数]{数据1,数据2,数据3,数据4};int arr3[2][3] { 1,2,3,4,5,6 };//方式4 //数据类型 数组名[][列数]{数据1,数据2,数据3,数据4};int arr4[][3] { 1,2,3,4,5,6 };system(pause);return 0;
}二维数组数组名 查看二维数组所占内存空间 获取二维数组首地址
int main0() {//二维数组名称用途//1.可以查看占用内存空间大小int arr[2][3] {{1,2,3},{4,5,6}};cout 二维数组所占内存空间为 sizeof(arr) endl;//24 4*6cout 二维数组第一行所占内存空间为 sizeof(arr[0]) endl;//12 4*3cout 二维数组第一个元素所占内存空间为 sizeof(arr[0][0]) endl;//4 cout 二维数组的行数为 sizeof(arr) / sizeof(arr[0]) endl;//2cout 二维数组的列数为 sizeof(arr[0]) / sizeof(arr[0][0]) endl;//3//2.可以查看二维数组的首地址cout 二维数组的首地址为 arr endl;cout 二维数组的第一行首地址为 (int)arr[0] endl;cout 二维数组的第二行首地址为 (int)arr[1] endl;cout 二维数组的第一个元素首地址为 (int)arr[0][0] endl;cout 二维数组的第二个元素首地址为 (int)arr[0][4] endl;system(pause);return 0;
}/*考试成绩统计
* 有三名同学(张三李四王五)在一次考试中的成绩分别如下表请分别输出三名同学的总成绩
* 语文 数学 英语
* 张三 100 100 100
* 李四 90 50 100
* 王五 60 70 80
*
*
* 1.创建二维数组3行3列
* 2.统计考试成绩让每行的三列相加求和
*
*/
int main() {int arr[3][3] {{100,100,100},{90,50,100},{60,70,80}};int sum 0;string names[3] { 张三,李四,王五 };for (int i 0; i 3; i) {for (int j 0; j 3; j) {sum arr[i][j];}cout names[i]总分为sum endl;sum 0;}system(pause);return 0;
}函数
作用将一段经常使用的代码封装起来减少重复代码
一个较大的程序一般分为若干个程序块每个模块实现特定的功能
函数的定义
1.返回值类型
2.函数名
3.参数列表
4.函数体语句
5return表达式
语法
返回值类型 函数名 参数列表)
{
函数体语句
return表达式
}
在这里插入图片描述
函数的调用
功能使用定义好的函数
语法函数名 (参数)
//函数定义
int add(int num1, int num2)//定义中num1,num2称为形式参数简称形参
{int sum num1 num2;return sum;
}
int main() {int a 10;int b 10;//调用add函数int sum add(a, b);//调用时的a,b称为实际参数简称实参cout sum sum endl;a 100;b 100;int sum2 add(a, b);cout sum2 sum2 endl;system(pause);return 0;
}值传递 函数调用时实参将数值传给形参 值传递时如果形参发生变化不会影响实参
//定义函数实现两个数字进行交换函数//如果函数不需要返回值声明的时候返回值写void
void swap(int num1, int num2) {cout 交换前: endl;cout num1 num1 endl;cout num2 num2 endl;int temp num1;num1 num2;num2 temp;cout 交换后: endl;cout num1 num1 endl;cout num2 num2 endl;//return; 当函数声明的时候不需要返回值可以不写reurn
}int main() {int a 10;int b 20;cout a a endl;cout b b endl;//值传递时函数的形参发生改变并不会影响实参swap(a, b);cout a a endl;cout b b endl;system(pause);return 0;
}函数的常见样式
1.无参无返
2.有参无返
3.无参有返
4.有参有返
函数的声明
作用告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义
函数的声明可以多次但函数的定义只有一次,一般声明也只写一次
函数的分文件编写
作用让代码结构更加清晰
函数分文件编写一般有4个步骤
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
#includeiostream
using namespace std;
//函数的声明
void swap(int a, int b);#include swap.h//函数的定义
void swap(int num1, int num2) {int temp num1;num1 num2;num2 temp;cout num1 num1 endl;cout num2 num2 endl;}#includeiostream
using namespace std;
#include swap.h//函数的声明
//void swap(int a, int b);//函数的定义
//void swap(int num1, int num2) {
//
// int temp num1;
// num1 num2;
// num2 temp;
//
// cout num1 num1 endl;
// cout num2 num2 endl;
//
//}//1.创建后缀名为.h的头文件//2.创建后缀名为.cpp的源文件//3.在头文件中写函数的声明//4.在源文件中写函数的定义int main() {int a 10;int b 20;cout a a endl;cout b b endl;//值传递时函数的形参发生改变并不会影响实参swap(a, b);cout a a endl;cout b b endl;system(pause);return 0;
}指针
指针的作用可以通过指针简介访问内存 内存编号是从0开始记录的一般用十六进制数字表示 可以利用指针变量保存地址
指针变量定义和使用
指针变量定义语法数据类型*变量名;
int main() {//1.定义指针int a 10;//指针定义的语法数据类型 * 指针变量名int * p;//让指针记录变量a的地址p a;cout a的地址为 a endl;cout 指针p p endl;cout *p *p endl;//10//2.使用指针//可以通过解引用的方式来找到指针指向的内存//指针前加 * 代表解引用找到指针指向的内存中的数据*p 1000;cout a a endl;//1000cout *p *p endl;//1000system(pause);return 0;
}指针所占内存空间
在32为操作系统下占用4个字节空间64位下占8个字节。
int main() {//指针所占内存空间int a 10;//int * p;//p a;int* p a;cout sizeof(int*) sizeof(p) endl;//8cout sizeof(float*) sizeof(float *) endl;//8cout sizeof(double*) sizeof(double *) endl;//8cout sizeof(char*) sizeof(char *) endl;//8system(pause);return 0;
}空指针和野指针
空指针指针变量指向内存中编号为0的空间
用途初始化指针变量
注意空指针指向的内存是不可以访问的
int main() {//空指针//1.空指针用于给指针变量进行初始化int* p NULL;//2.空指针是不可以进行访问的//0~255之间的内存编号是系统占用的因此不可以访问//cout *p endl;报错//*p 100;报错system(pause);return 0;
}野指针指变量指向非法的内存空间
const修饰指针
const修饰指针 — 常量指针指针的指向可以修改但是指针指向的值不可以改
const int * p a; const修饰常量 — 指针常量指针的指向不可以改但是指针指向的值可以改
int * const p2 a; const既修饰指针又修饰常量指针的指向和指针指向的值都不可以改
const int * const p3 a; 指针和数组
作用利用指针访问数组中元素
int main() {//指针和数组//利用指针访问数组中的元素int arr[10] { 1,2,3,4,5,6,7,8,9,10 };cout 第一个元素为 arr[0] endl;int* p arr;//arr就是数组首地址cout 利用指针访问第一个元素 *p endl;p;//让指针向后偏移4个字节cout 利用指针访问第二个元素 *p endl;cout 利用指针遍历数组 endl;int* p2 arr;for (int i 0; i 10; i) {//coutarr[i]endlcout *p2 endl;p2;}system(pause);return 0;
指针和函数
作用利用指针作函数参数可以修改实参的值
如果不想修改实参就用值传递如果想修改实参就用地址传递
//实现两个数字进行交换
void swap01(int num1, int num2) {int temp num1;num1 num2;num2 temp;cout 交换后: endl;cout num1 num1 endl;cout num2 num2 endl;
} void swap02(int* p1, int* p2) {int temp *p1;*p1 *p2;*p2 temp;
}int main() {//指针和函数//1.值传递int a 10;int b 20;//swap01(a, b);//值传递不会改变实参//2.地址传递//如果是地址传递可以改变实参swap02(a, b);cout a a endl;cout b b endl;system(pause);return 0;
}指针、数组、函数
#includeiostream
using namespace std;/*
* 封装一个函数利用冒泡排序实现对整型数组的升序排序
* 例如数组int arr[10] {4,3,6,9,1,2,10,8,7,5};
*
*/// 参数1 数组的首地址 参数2 数组长度
void bubbleSort(int * arr, int len) {//int * arr 也可以写为int arr[]for (int i 0; i len - 1; i) {for (int j 0; j len - 1 - i; j) {//如果jj1的值 交换数字if (arr[j] arr[j 1]) {int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}}}//打印数组
void printArray(int * arr, int len) {for (int i 0; i len; i){coutarr[i]endl;}
}int main() {//1.创建数组//2.创建函数实现冒泡排序//3.打印排序后的数组//1.创建数组int arr[10] { 4,3,6,9,1,2,10,8,7,5 };//数组长度int len sizeof(arr) / sizeof(arr[0]);// 2.创建函数实现冒泡排序bubbleSort(arr, len);//3.打印排序后的数组printArray(arr, len);system(pause);return 0;
}