0
点赞
收藏
分享

微信扫一扫

【C++基础】笔记1——复习函数 指针 结构体

GhostInMatrix 2022-03-11 阅读 74
c++

函数

函数定义里小括号内称为形参
函数调用里小括号内称为实参

值传递的时候,形参发生任何的改变,都不会影响实参

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

函数的分文件编写

1.创建后缀名为 .h 的头文件
2.创建后缀名为 .cpp 的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义

指针

指针占用的内存空间

32位操作系统下,任何类型指针均为4个字节
64位操作系统下,任何类型指针均为8个字节

空指针

定义:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
0~255之间的内存编号是系统占用的,因此不能访问

野指针

定义:指针变量指向非法的内存空间

const修饰指针

1.const修饰指针——常量指针

const int *p1 = &a;

指针指向的值不可以修改,指针的指向可以修改

*p1 = 20;		//错误
p1 = &b;		//正确

2.const修饰常量——指针常量

int * const p2 = &a;

指针的指向不可以修改,指针指向的值可以修改

p2 = &b;		//错误
*p2 = 20;		//正确

3.const既修饰指针,又修饰常量

const int * const p3 = &a;

指针的指向和指针指向的值都不可以修改

指针和数组

int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int *p = arr;		//arr就是数组首地址

利用指针遍历数组

int *p2 = arr;
for (int i = 0; i < 10; i++) {
	cout << *p2 << endl;
	p2++;
}

函数中的值传递和地址传递

int a = 10, b = 20;
值传递
void swap1(int x, int y)
{
	int temp;
	temp = x;
	x = y;
	y = temp;
}

值传递不会改变实参的值

	swap1(a, b);
	cout << "a = " << a << "; b = " << b << endl;
地址传递
void swap2(int *p1, int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}

地址传递 会改变实参的值

	swap2(&a, &b);		
	cout << "a = " << a << "; b = " << b << endl;

结构体

结构体定义
struct Student {
	string name;
	int age;
	int score;
};

数组:

Student StuArray[] = { {"费沁源", 21, 16 }, {"王奕", 21, 9 }, {"周诗雨", 24, 12} };

指针:

Student s1 = { "宋雨珊", 23, 40 };
Student *p = &s1;

Student *q = &StuArray[0];

Student *stu = { 0 };
stu[0] = { "沈梦瑶", 24, 3 };
值传递
void printStu1(Student s)
{
	cout << "printStu1_值传递" << endl;
	cout << s.name << " " << "age:" << s.age << " score:" << s.score << endl;
}
printStu1(s1);
地址传递
void printStu2(Student *p)
{
	cout << "printStu2_地址传递" << endl;
	cout << p->name << " " << "age:" << p->age << " score:" << p->score << endl;
}
printStu2(&s1);
结构体嵌套
struct Team {
	string t_name;
	struct Student stu;
};
Team H;
H.t_name = "HII";
H.stu.name = "万丽娜";
H.stu = { "冯思佳", 23, 0 };
const修饰结构体
void Stu_const(const Student *p)
{
	p->age = 25;		//错误,const使得值不可以修改,防止误操作
}
举报

相关推荐

0 条评论