首页 > 编程语言 >c++基础入门2

c++基础入门2

时间:2023-04-13 23:33:49浏览次数:42  
标签:arr 入门 示例 int 函数 基础 c++ 数组 指针

一、数组

1、概述

所谓数组,就是一个集合,里面存放相同类型的数据元素

特点:

1、数组中的每个数据元素都是相同的数据类型

2、数组是由连续的内存位置组成的

2、一维数组

(1)、定义方式:

一维数组有中定义方式:

1、数据类型 数组名[数据长度];

2、数据类型 数组名[数据长度] = {值1,值2.....};

3、数据类型 数组名[] = {值1,值2......};

c++基础入门2_c++

示例:

int main() {

	//一维数组定义
	//方式1
	int arr[5] = {0};
	//方式2
	int arr1[5] = { 1,2,3,4,5 };
	//方式3
	int arr2[] = { 6,7,8,9,0 };
	cout << "数组1:";
	for (int i = 0; i < 5; i++) {
		cout << arr1[i] ;
	}
	cout << "\n数组2:";
	for (int i = 0; i < 5; i++) {
		cout << arr2[i];

	}
	cout << "\n";
	system("pause");
	return 0;
}

c++基础入门2_数据类型_02


(2)、数组名:

用途:

1、用来统计整个数组在内存中的长度

2、可以获取数组在内存中的首地址

c++基础入门2_c++_03


示例:

c++基础入门2_j基础入门_04


练习案例:

1、五只小猪称体重

案例描述:

在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};找出并打印最重的小猪体重

代码示例:

int main() {
	
	//五只小猪称体重
	int weight = 0;
	int arr[5] = { 12,34,56,78,43 };
	for (int i = 0; i < (sizeof(arr) / sizeof(arr[0]));i++) {
		if (weight < arr[i]) {
			weight = arr[i];
			cout << "当前最重小猪:" << weight << endl;
		}
	}
	cout << "最重小猪:" << weight << endl;

	system("pause");
}

执行效果:

c++基础入门2_数据类型_05


2、数组元素逆置

案例描述:

请声明一个5个元素的数组,并且将元素逆置.

(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1);

代码示例:

int main() {
	int arr[5] = { 1,2,3,4,5 };
	int tmp = 0;
	int length = sizeof(arr) / sizeof(arr[0]);
	//打印逆置前
	cout << "逆置前:";
	for (int j = 0; j < length;j++) {
		cout << arr[j]<<" ";
	}
	cout << "\n";
	//逆置
	for (int i = 0;i<(length / 2);i++) {
		tmp = arr[i];
		arr[i] = arr[length - i-1];
		arr[length - i-1] = tmp;
	}
	//打印逆置后
	cout << "逆置后:";
	for (int k = 0; k < length; k++) {
		cout << arr[k] << " ";
	}
	cout << "\n";

	system("pause");
	return 0;
}

执行效果:

c++基础入门2_j基础入门_06


(3)、冒泡排序

作用:最常用的排序算法,对数组内元素进行排序

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。

3、重复以上的步骤,每次比较次数-1,直到不需要比较

示例: 将数组 { 4,2,8,0,5,7,1,3,9 } 进行升序排序

代码示例:

int main() {
	//40/4 = 10
	int arr[] = { 4,2,8,0,5,7,1,3,9 };
	int length = sizeof(arr) / sizeof(0);
	int tmp = 0;
	//排序前
	cout << "排序前";
	for (int k = 0; k < length; k++) {
		cout << arr[k];
	}

	cout << "\n";

	//排序
	for (int j = 0; j < length;j++) {
		for (int i = 0; i < length-1; i++) {
			if (arr[i] > arr[i + 1]) {
				tmp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = tmp;
			}

		}
	}

	//排序后
	cout << "排序后";
	for (int k = 0; k < length;k++) {
		cout << arr[k];
	}
	cout << "\n";
	system("pause");
	return 0;
}

执行效果:

c++基础入门2_c++_07


3、二维数组

(1)、二维数组的四种定义方式:

1、数据类型 数组名 [行数][列数];

2、数据类型 数组名 [行数][列数] = {{数据1 ,数据2},{数据3,数据4}};

3、数据类型 数组名 [行数][列数] = {数据1,数据2,数据3,数据4};

4、数据类型 数组名 [ ][列数] = {数据1,数据2,数据3,数据4};

建议:以上四种方式,第二种最直观,提高代码的可读性

示例:

c++基础入门2_j基础入门_08


(2)、二维数组数组名

作用:

1、查看二维数组所在空间

2、获取二维数组的首地址

示例:

c++基础入门2_c++_09


总结:

1、二维数组名就是这个数组的首地址

2:对二维数组名进行sizeof时,可以获取整个二维数组占用的内存空间大小

3、二维数组可以看成是两个一维数组嵌套

二、函数

1、概述

作用:将一段经常使用的代码封装起来,减少重复的代码

一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能

2、函数的定义

函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数列表

4、函数体语句

5、return表达式

语法:

返回值的类型 函数名 (参数列表){

函数体语句

return 表达式

}

示例:

c++基础入门2_c++_10


3、函数的调用

功能:使用定义好的函数

语法:函数名(参数)

示例:

c++基础入门2_数据类型_11


4、值传递

所谓值传递,就是函数调用时,实参将数值传入给形参

值传递时,如果形参发生改变,并不会影响实参

5、函数的常见形式

常见的函数样式有四种

1、无参无反

2、有参无反

3、无参有反

4、有参有反

示例:

void test1() {
	cout<<"这是无参无反函数"<<endl;
}

int test2() {
	cout << "这是无参有反函数" << endl;
	return 1;
}

void test3(int a) {
	
	cout << "这是有参无反函数:"<<a << endl;
}

int test4(int x) {
	cout << "这是有参有反函数:" <<x<< endl;
	return x;
}

int main() {
	//无参无反
	test1();
	//无参有反
	test2();
	//有参无反
	int a = 10;
	test3(10);
	//有参有反
	int x = 20;
	test4(x);

}

c++基础入门2_j基础入门_12


6、函数的声明

作用:告诉编译器函数名称以及如何调用函数,函数的实际主体可以单独定义

语法:数据类型 函数名(参数列表);

注:函数的声明可以多次,但函数的定义只能有一次

示例:

c++基础入门2_j基础入门_13


7、函数的分文件编写

作用:让代码结构更加清晰

函数分文件编写一般分为4个步骤:

1、创建一个.h的头文件

2、创建后缀名为.cpp的源文件、

3、在头文件中写函数声明

4、在源文件中写函数的定义

示例:

c++基础入门2_数据类型_14


三、指针

1、指针的基本概念

指针的作用:可以通过指针间接访问内存

注意事项:

1、内存编号是从0开始记录的,一般使用十六进制的数字表示

2、可以利用指针变量保存地址

2、指针变量的定义和使用

指针变量定义语法数据类型* 指针变量名;

示例:

int main() {

	//指针定义
	int a = 10;
	int* p = &a;
	cout << "a的地址:" << &a << endl;
	cout << "p的地址:" << p << endl;

	//指针使用
	cout << "存放在p地址的值:" << *p << endl;

}

c++基础入门2_j基础入门_15

c++基础入门2_数据类型_16


3、指针所占的内存空间

提问:指针也是一种数据类型,那么这种数据类型占用多少内存空间?

答:在32位操作系统,占用4个字节,64位,占8个字节

示例:

c++基础入门2_j基础入门_17

c++基础入门2_j基础入门_18


4、空指针和野指针

空指针:指针变量指向的内存是编号为0的空间

用途:初始化指针变量

注意:空指针指向的内存是不可以访问的

示例:

c++基础入门2_j基础入门_19

c++基础入门2_j基础入门_20


野指针:指针变量指向一个非法的内存空间(指向未知内存空间)

示例:

c++基础入门2_j基础入门_21


5、const修饰指针

const修饰指针有三种情况:

1、Const修饰指针 --常量指针(指向常量的指针)

2、Const修饰常量 --指针常量(指针是常量)

3、Const即修饰指针,有修饰常量(指针和值都不可修改)

c++基础入门2_j基础入门_22

c++基础入门2_数据类型_23

c++基础入门2_数据类型_24


6、指针和数组

作用:利用指针访问数组中的元素

示例:

//指针和数组
int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int* p = arr;
	for (int i = 0; i < 10;i++) {
		cout << "第" << i << "个数组元素的值是:" << *p<<endl;
		p++;
	}
}

c++基础入门2_数据类型_25


7、指针和函数

作用:利用指针做函数参数,可以修改实参的值,即地址传值

示例:

void swap(int* a,int* b) {
	int temp = 0;
	temp = *a;
	*a = *b;
	*b = temp;
}

//指针和函数
int main() {
	//地址传值
	int a = 10;
	int b = 20;
	cout <<"调用前" <<a << " " << b<<endl;
	swap(&a,&b);
	cout << "调用后" << a<<" " << b;
}

c++基础入门2_数据类型_26


四、结构体

1、结构体的基本概念

结构体属于用户自定义的数据类型,允许用户存储不同的数据类型

2、结构体的定义和使用

语法:struct 结构体名{结构体成员列表};

通过结构体创建变量的方式有三种:

1、struct 结构体名 变量名

2、struct 结构体名 变量名 = {成员1值,成员2值......}

3、定义结构体的时候顺便创建变量

示例:

int main() {

	//三种变量定义方式
	//1、
	struct student s1;
	s1.name = "zhangsan";
	s1.age = 18;
	s1.score = 100;
	cout << "学生:" << s1.age << "年龄:" << s1.age << "成绩:" << s1.score << endl;

	//2、
	student s2 = { "lisi",19,101 };
	cout << "学生:" << s2.age << "年龄:" << s2.age << "成绩:" << s2.score << endl;

	//3、
	s3.name = "laoliu";
	s3.age = 20;
	s3.score = 102;
	cout << "学生:" << s3.age << "年龄:" << s3.age << "成绩:" << s3.score << endl;

	system("pause");
	return 0;
}

c++基础入门2_c++_27


注意:

在C++中,创建变量时,struct关键字可以省略

3、结构体数组

作用:将自定义的结构体放入到数组中,方便维护

语法:struct 结构体名 数组名[元素个数] = { {} ,{}...}

示例:

c++基础入门2_c++_28


4、结构体指针

作用:通过指针访问结构体中的成员

利用操作符->,可以通过结构体指针访问结构体属性

语法:指针名->属性

示例:

c++基础入门2_数据类型_29


5、结构体嵌套结构体

作用:结构体中的成员可以是另一个结构体

例如:每一个老师辅导学员,一个老师的结构体中,记录一个学生的结构体

示例:

c++基础入门2_c++_30


6、结构体做函数参数

作用:将结构体作为参数向函数传递

传递方式有两种:

1、值传递

2、地址传递

示例:

c++基础入门2_c++_31

c++基础入门2_数据类型_32


7、结构体中const使用场景

作用:用const来防止误操作(常量指针)

示例:

c++基础入门2_c++_33



标签:arr,入门,示例,int,函数,基础,c++,数组,指针
From: https://blog.51cto.com/qiux/6188710

相关文章

  • Semantic Kernel 入门系列:
    了解的运作原理之后,就可以开始使用SemanticKernel来制作应用了。SemanticKernel将embedding的功能封装到了Memory中,用来存储上下文信息,就好像电脑的内存一样,而LLM就像是CPU一样,我们所需要做的就是从内存中取出相关的信息交给CPU处理就好了。内存配置使用Memory需要注册embe......
  • kettle从入门到精通 第十二课 kettle java代码过滤记录、利用Janino计算Java表达式
    1、下图通过简单的示例讲解了根据java代码过滤记录和利用Janino计算Java表达式两个组件。   2、根据java代码过滤记录1)步骤名称:自定义2)接收匹配的行的步骤(可选):下面条件(java表达式)执行结果为true时流转的步骤3)接收不匹配的行的步骤(可选):下面条件(java表达式)执行结果......
  • Java基础知识点内部类之成员内部类
    一:概述1.成员内部类顾名思义就是写在成员位置的,属于外部类成员。2.成员变量可以被一些修饰符所修饰,比如:private,default,public,static等。3.在成员内部类中,jdk16之前不能定义静态变量,jdk16开始才可以定义静态变量。二;获取内部类对象方法一;当成员内部类被private修饰时,在外部类中......
  • python爬虫基础
    下面是爬取网站源代码的代码,用的我们学校的教务处网站。。#!/usr/bin/envpythonimporturllibimporturllib2url='http://etc.sdut.edu.cn/eol/main.jsp'user_agent='Mozilla/5.0(X11;Ubuntu;Linuxx86_64;rv:42.0)Gecko/20100101Firefox/42.0'values={}values[......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 10.控制台变量的用法 & 静态函数库 &
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本文对应Lecture15,61-ConsoleVariablesfordebuggingandgamebalancing。本文将会教你如何在C++中编辑控制台变量的逻辑,通过在游戏中打开控制台,以修改控制台变量的方式来修改游戏里的各种参数;此外,还会使用自......
  • C++ // 2023/4/13
    stl**序列式容器**:强调值的排序,序列式容器中的每个元素均有固定的位置。  **关联式容器**:二叉树结构,各元素之间没有严格的物理上的顺序关系质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等非质变算法:是指运算过程中不会更改区间内的元素内容......
  • java捡基础
    ++与--写在前后有什么区别?++或--写在变量前后有区别?*1.如果不参与运算的话,它们是没有区别。*2.如果参与了运算,区别就是很大了。*参与运算时两者的区别:累加的结果要不要参与本次的运算,(使用累加之后值运算,还是使用累加之前的值进行运算......
  • js基础:1.
    javascript(简称“js”)开发外部脚本语言是轻量级解释型语言开始于1995年网景公司javascript的标准是ECMAscript互联网是1970年1月1号js代码必须写在script标签里(预格式化文本)预格式输出标签console.log输出使用:控制台打印语句(控制台日志)变量var声明关键字关......
  • C++课本第三章例题
    3-2输入一个8位二进制数,将其转换为十进制数输出。1#include<iostream>2usingnamespacestd;3doublepower(doublex,intn);//函数的声明,double类型防止超出整型4intmain()5{6intnumber=0;7for(inti......
  • 一、图论基础知识(2023.4.13初版[个人向])
    1.图的定义和概念1.图的定义图(Graph)是由顶点的有穷非空集合V和顶点之间的边的集合E组成,通常表示为G={V,E},其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合1.图中点的数据元素称之为顶点线性表中的数据元素称为元素数中的数据元素称为结点2.线性表和树均可以没有元素,......