c++学习(第7天)---引用(黑马程序员学习笔记)

本文解析了C++中引用的作用,如何通过引用给变量起别名,并讨论了引用在函数参数传递中的不同效果,包括值传递、地址传递和引用传递的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用作用:给变量起别名

语法:
数据类型 &别名=原名
#include<iostream>
using namespace std;
int main()
{
	
	//引用的语法
	int b = 10;
	int &a = b;
	cout << b << endl;
	cout << a << endl;
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述
注意事项

1.引用必须初始化

2.初始化以后,不可以改变

引用做函数参数

作用:函数传参时,可以利用引用的技术让形参改变实参

#include<iostream>
using namespace std;
int main()
{
	void exchange1(int a, int b);
	void exchange2(int *a, int *b);
	void exchange3(int &a, int &b);
	int k, h;
	cout << "请输入数1" << endl;
	cin >> k;
	cout << "请输入数2" << endl;
	cin >> h;
	//值传递
	exchange1(k, h);
	cout << "值传递以后的数1和数2分别为:" << k <<" "<< h << endl;
	//地址传递
	exchange2(&k, &h);
	cout << "地址传递以后的数1和数2分别为:" << k << " " << h << endl;
	//引用传递
	exchange3(k, h);
	cout << "引用传递以后的数1和数2分别为:" << k << " " << h << endl;
	system("pause");
	return 0;
}
//交换函数
//值传递
void exchange1(int a,int b){
	int temp;
	temp = a;
	a = b;
	b = temp;

}
//地址传递
void exchange2(int *a, int *b){
	int temp=0;
	temp = * a;
	*a = *b;
	*b = temp;

}
//引用传递
void exchange3(int &a, int &b){
    int	temp = a;
	a = b;
	b = temp;
}

运行结果:
值传递,不会改变实参的值, 所以数1和数2为12 24

地址传递会改变实参的值,此时数1和数2为24 12

引用传递也会改变实参的值,此时数1和数2又变为12 24
在这里插入图片描述

### 黑马程序员 C++ 课程 Markdown 笔记 以下是基于提供的参考资料以及相关知识点整理的一份关于黑马程序员 C++ 课程的 Markdown 笔记: #### 1. **逻辑运算符** 在 C++ 中,`&&` 是逻辑与运算符。它用于判断两个条件是否都为真。如果两者均为真,则返回 `true`;否则返回 `false`。 ```cpp #include <iostream> using namespace std; int main() { int a = 10; int b = 10; cout << (a && b) << endl; // 输出 1 表示 true [^1] a = 10; b = 0; cout << (a && b) << endl; // 输出 0 表示 false [^1] a = 0; b = 0; cout << (a && b) << endl; // 输出 0 表示 false [^1] return 0; } ``` --- #### 2. **指针与数组操作** 通过指针可以高效地访问修改数组中的元素。以下是一个简单的例子展示了如何使用指针遍历数组并打印其内容。 ```cpp #include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int* p = arr; // 将指针初始化为指向数组的第一个元素 [^2] cout << "第一个元素: " << arr[0] << endl; // 使用下标方式访问 [^2] cout << "指针访问第一个元素: " << *p << endl; // 使用解引用方式访问 [^2] for (int i = 0; i < 10; i++) { cout << *p << endl; // 打印当前指针所指向的内容 [^2] p++; // 移动指针到下一个位置 [^2] } return 0; } ``` --- #### 3. **运算符重载** C++ 支持运算符重载功能,允许我们重新定义某些内置运算符的行为以便于处理自定义数据类型。例如,可以通过重载 `<<` 运算符来实现对象的流输出。 ```cpp #include <iostream> using namespace std; class Person { public: string name; int age; Person(string n, int a) : name(n), age(a) {} }; // 定义全局函数重载 << 运算符 ostream& operator<<(ostream& os, const Person& p) { os << "Name: " << p.name << ", Age: " << p.age; // 自定义输出格式 [^4] return os; } int main() { Person person("Alice", 25); cout << person << endl; // 调用重载后的 << 运算符 [^4] return 0; } ``` --- #### 4. **继承基础语法** 继承是面向对象编程的核心概念之一,在 C++ 中支持单继承或多层继承。子类可以从父类派生,并扩展或覆盖父类的功能。 ```cpp #include <iostream> using namespace std; class BaseClass { protected: int baseValue; public: BaseClass(int val) : baseValue(val) {} void displayBase() { cout << "Base Value: " << baseValue << endl; // 显示基类成员变量 [^4] } }; class DerivedClass : public BaseClass { private: int derivedValue; public: DerivedClass(int bVal, int dVal) : BaseClass(bVal), derivedValue(dVal) {} void displayDerived() { cout << "Derived Value: " << derivedValue << endl; // 显示派生类成员变量 [^4] } }; int main() { DerivedClass obj(10, 20); obj.displayBase(); // 访问基类方法 obj.displayDerived(); // 访问派生类方法 [^4] return 0; } ``` --- #### 5. **Markdown 注脚创建** 在 Markdown 文档中,可以通过特定语法创建注脚以提供额外的信息或解释。 ```markdown 这是一个带有注脚的例子[^example]. [^example]: 此处是对前面提到内容的具体说明。 ``` 以上展示了一个基本的注脚结构,其中 `[^example]` 是标记部分,而后续紧跟的是对应的描述内容 [^5]。 --- #### 总结 本篇笔记涵盖了 C++ 的核心主题,包括逻辑运算符、指针应用、运算符重载、继承机制以及 Markdown 注脚的构建技巧等内容。这些知识对于学习者深入理解 C++ 编程具有重要意义。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值