C++基础部分笔记

1.注释

(1)单行注释 ://

(2)多行注释  :/**/

2.变量

(1)语法: 数据类型  变量名 = 变量初始值; 

int a = 10;    

                              

3.常量

(1)#define宏常量:#define  常量名  常量值

(2)const修饰的变量:const  数据类型 常量名 = 常量值

4.关键字

5.标识符命名规则(不能用关键字)

(1)标识符由字母、数字、下划线组成;

(2)第一个字符必须为字母或下划线;

(3)区分大小写。

6.数据类型(给变量分配合适的内存空间)

(1)整型

(2)sizeof关键字:sizeof(数据类型/变量)

(3)浮点型

单精度:float 4字节 7位有效数字 

双精度:double 8字节 15-16位有效数字

(4)字符型:用于显示单个字符,用单引号括起来

(5)bool类型

(6)数据的输入:cin >> 变量

7.运算符

(1)算术运算符

 

(2)赋值运算符

(3)比较运算符

(4)逻辑运算符

与:&&;  或:||;  非:!

8.流程结构

(1)顺序结构

(2)选择结构

三目运算符:表达式1 ? 表达式2 :表达式3

switch语句:判断的时候只能是整型或者字符型,不可以是一个区间

switch(表达式)
{
    case 结果1:执行语句;break;
    case 结果2:执行语句;break;
    ...
    default:执行语句;break;
}

(3)循环结构

  • while循环
  • do...while: do{循环语句}  while(循环条件);
  • for 循环:

        for (起始表达式;条件表达式;末尾循环体){

                循环语句

                }

  • break:用于跳出选择结构或者循环结构

        出现在switch条件语句中,终止case并跳出switch;

        出现在循环语句中,跳出当前循环;

        出现在嵌套循环中,跳出最近的内层循环。

  • continue:在循环语句中,跳过本次循环中未执行的语句,直接开始下次循环
  • goto : goto 标记;跳转到标记位置

9.数组

(1)一维数组定义

        数据类型   数组名[数组长度]

        数据类型   数组名[数组长度] = {值}

        数据类型   数组名[ ] = {值}

(2)二维数组定义

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

        数据类型   数组名[行数] [列数]= { {数据1,数据2.。。。} ,{数据1,数据2.。。。}}

        数据类型   数组名[行数] [列数] = {数据1,数据2.。。。}

        数据类型   数组名[] [列数] = {数据1,数据2.。。。}

10.函数

(1)函数定义

返回值类型 函数名(参数列表)
{
    函数体语句;
    return 表达式;
}

(2)函数调用:函数名称 (参数)

(3)值传递:函数的形参发生改变,并不会影响实参

//值传递:实现两个数进行交换
#include <iostream>
using namespace std;

void swap (float num1, float num2) {
	cout << "交换前:";
	cout << "num1 = " << num1 << "  ";
	cout << "num2 = " << num2 << endl;

	float temp = num1;
	num1 = num2;
	num2 = temp;

	cout << "交换后:";
	cout << "num1 = " << num1 << "  ";
	cout << "num2 = " << num2 << endl;
}
int main() {
	float a, b;
	cout << "a = "; cin >> a;
	cout << "b = "; cin >> b;
	//当做值传递时,函数的形参发生改变,并不会影响实参
	swap(a, b);
	cout << "a = " << a << "  ";
	cout << "b = " << b << "  ";
	system("pause");
	return 0;

结果:

(4)函数的常见样式

  • 无参无返
  • 有参无返
  • 无参有返
  • 有参有返

(5)函数的声明:数据类型 函数名(参数) ;

注:声明可以写多次,定义只能有一次

(6)函数的分文件编写

  • 创建后缀名为.h的头文件;
  • 创建后缀名为.CPP的源文件;
  • 在头文件中写函数的声明;
  • 在源文件中写函数的定义。

11.指针 通过指针直接访问内存,用指针变量保存地址

(1)指针变量定义语法:  数据类型  * 变量名;

(2)指针占用 内存:在32位操作系统下,占用4字节空间;在64位操作系统下,占用8字节。

(3)空指针

  • 空指针:指针变量指向内存中编号为0的空间
  • 用途:初始化指针变量
  • 注意:空指针指向的内存是不可以访问的(0`255之间的内存编号是系统占用的)

(4)野指针:指针变量指向非法的内存空间

(5)const修饰指针

  • const修饰指针  ——常量指针——指针的指向可以修改,但指针指向的值不可以修改:const int *p = &a;
  • const修饰常量  ——指针常量:int *const p = &a;
  • const既修饰指针又修饰常量  :const int *const p = &a;

(6)指针和数组

//指针和数组
//利用指针访问数组中的元素
#include <iostream>
using namespace std;

int main() {

	//创建数组
	int arr[5] = { 1,2,3,4,5 };
	int * p = arr;//取数组首地址
	cout << "利用指针访问数组中的元素:";
	for (int j = 0; j < 5; j++) {
		cout << *( p + j ) << " ";
	}
	system("pause");
	return 0;
}

(7)指针和函数

//指针和函数
//实现两个数字进行交换

#include <iostream>
using namespace std;

void swap2(int *p1, int *p2)
{
	int temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}
void swap1(int num1, int num2) {
	cout << "交换前:";
	cout << "num1 = " << num1 << "  ";
	cout << "num2 = " << num2 << endl;

	int temp = num1;
	num1 = num2;
	num2 = temp;

	cout << "交换后:";
	cout << "num1 = " << num1 << "  ";
	cout << "num2 = " << num2 << endl;
}
int main() {
	int a = 10;
	int b = 20;
	//1.值传递
	//当做值传递时,函数的形参发生改变,并不会影响实参
	swap1(a, b);
	cout << "a = " << a << "  ";
	cout << "b = " << b << endl;
	//2.地址传递
	//地址传递会影响(改变)实参
	cout << "a = " << a << "  ";
	cout << "b = " << b << endl;
	swap2(&a, &b);
	cout << "a = " << a << "  ";
	cout << "b = " << b << "  ";
	system("pause");
	return 0;
}

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

(1)结构体定义: struct 结构体名{ 结构体成员}

  • struct 结构体名 变量名
  • struct 结构体名 变量名 = {成员1值,成员2值....}
  • 定义结构体时顺便创建变量
//结构体的定义
#include <iostream>
using namespace std;

//1.创建学生数据类型:姓名,班级,学号
//语法:struct {成员列表}
struct student {
	string name;
	string class_stu;
	string num;
}s3;

//2.通过学生类型创建具体学生信息
int main() {
	//(1) struct student s1
	//给s1属性赋值,通过“ . ”访问结构体变量的属性
	struct student s1;//struct关键字可以省略
	//student s1;
	s1.name = "hhy";
	s1.class_stu = "初一二班";
	s1.num = "20181212345";

	
	//(2) struct student s2 = {,,,}
	struct student s2 = { "李四","初一三班","20221209141" };

	
	//(3) 在定义结构体时顺便创建结构体变量
	s3.name = "张三";
	s3.class_stu = "初一四班";
	s3.num = "22221209141";

	system("pause");
	return 0;
}

(2)结构体数组

struct 结构体名 数组名【元素个数】= {{},{},{}}

(3)结构体指针 :通过指针访问结构体中的成员

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

(4)结构体嵌套结构体

//结构体嵌套结构体
// 每个老师辅导一个学学员,一个老师的结构体中,记录一个学生的结构体
#include <iostream>
using namespace std;

// 1.定义学生结构体
struct student {
	string name;
	string class_stu;
	string num;
};
// 2,定义老师结构体
struct teacher {
	int id;
	string name;
	struct student stu;//子结构体
};
int main() {

	// 3.创建老师
	struct teacher t = { 1,"老李"};

	t.stu = { "张三","电子1802","20181209140" };

	cout << "老师id:" << t.id
		<< " " << "老师姓名:" << t.name
		<< " " << "老师带的学生姓名:" << t.stu.name
		<< " " << "班级:" << t.stu.class_stu
		<< " " << "学号:" << t.stu.num << endl;

	system("pause");
	return 0;
}

(5)结构体做函数参数

  • 值传递
  • 地址传递

//结构体做函数参数

#include <iostream>
using namespace std;

// 1.定义学生结构体
struct student {
	string name;
	string class_stu;
	string num;
};
// 2,将学生传入到一个参数中,打印学生信息
//2.1值传递
void printstu1(struct  student  s) {
	s.num = "1";
	cout << "值传递的打印结果:"
		<< " " << "姓名:" << s.name
		<< " " << "班级:" << s.class_stu
		<< " " << "学号:" << s.num << endl;
}
//2.2地址传递
void printstu2(struct  student  *p) {
	p->num = "10";
	cout << "地址传递的打印结果:"
		<< " " << "姓名:" << p-> name
		<< " " << "班级:" << p->class_stu
		<< " " << "学号:" << p->num << endl;
}
int main() {

	// 3.创建结构体变量
	struct  student  s = { "张三","初二一班","21209140" };

	cout << "main函数中的打印结果:"
		<< " " << "姓名:" << s.name
		<< " " << "班级:" << s.class_stu
		<< " " << "学号:" << s.num << endl;
	printstu1(s);
	cout << "值传递后main函数中的打印结果:"
		<< " " << "姓名:" << s.name
		<< " " << "班级:" << s.class_stu
		<< " " << "学号:" << s.num << endl;
	printstu2(&s);
	cout << "地址传递后main函数中的打印结果:"
		<< " " << "姓名:" << s.name
		<< " " << "班级:" << s.class_stu
		<< " " << "学号:" << s.num << endl;
	system("pause");
	return 0;
}

(6)结构体中const使用场景 :用const 来防止误操作

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糯米团子鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值