0
点赞
收藏
分享

微信扫一扫

【音视频】C++ 快速入门


【音视频】C++ | C++ 快速入门

在前面重点讲解了C语言,而对于C++语言,只要一篇文章即可,C++是对C语言的扩展,基于面向对象的编程,掌握了C就等于掌握了一般的C++,只要有面向对象语言基础的都可以理解C++,主要讲解C++独有的一些特性。

C++的代码结构

#include <iostream> //C++的标准支持

using namespace std; //命名空间 c++的特性 类似Java的内部类

int mainT() {
// C++可以运行C语言的
printf("C版\n"); // C语言的打印
// :: 所在的作用域
// std::cout << "Hello, World!" << std::endl;
// 在前面引入了命名空间可以省去std::
cout << "Hello, World!" << endl; // C++中的打印 endl == \n 换行
// << 是操作符重载 kotlin也有操作符重载
cout << "收到\n" << "四大皆空\n";
const int number = 100;
cout << number << endl;
return 0;
}

引用的原理与常量引用

C++中提出了引用的概念,其实在Java中也经常使用到引用,只不过Java将引用很隐晦的表示不想C++中需要显示的声明引用。

引用的使用如下:

通过&声明引用,引用不会占用内存空间,它只是相当于变量的别名,可以理解为它就是引用的变量,变量就是它,相当于曹操 字孟德,曹操和孟德都是一个人。引用非常常用,它不会占用任何内存空间,直指变量本省,操作引用就是操作变量

#include <iostream>
#include <cstring>

using namespace std;

int main() {
int a = 1;
int &b = a; // &:注意在等号的左边就是表示引用,在等号的右边 int *b = &a;就表示取址 含义是不同的

printf("a:%d,b:%d\n", a, b); // a:1,b:1
b = 2; // 操作别名就相当于操作a本省
printf("a:%d,b:%d\n", a, b); // a:2,b:2
// a 和 b的地址是完全一致的
printf("a:%p,b:%p\n", &a, &b); // a:000000a07a3ffd44,b:000000a07a3ffd44

return 0;
}

a:1,b:1
a:2,b:2
a:000000a07a3ffd44,b:000000a07a3ffd44

int &b = a; // &:注意在等号的左边就是表示引用,在等号的右边 int *b = &a;就表示取址 含义是不同的

关于引用的一些特性:

  • & 只是起到标识的作用
  • 声明引用时,必须同时对其进行初始化
  • 声明引用的类型和变量的类型要一致
  • 引用声明完毕后,引用名不能作为其他变量名的别名
  • 声明一个引用,不是新定义一个变量,它只表示该引用名是目标变量名的一个别名,本身不是一种数据类型,不占用存储单元
  • 不能建立数组的引用,因为数组是若干元素的集合,无法建立一个数组的别名 int aaa[10] = {1,2}; int &aa1[10] = aaa; //错误的

引用作为函数的参数:

在C语言中要实现两个数的交换就需要使用指针,进行频繁的取址和取值操作

/**
* 取地址方式的互换
* @param number1 地址
* @param number2 地址
*/
void numberChange(int *number1, int *number2) {
int temp = 0;
temp = *number1;
*number1 = *number2;
*number2 = temp;
}

在C++中就可以使用引用进行两个数的交换,引用不会占用内存,直接操作变量本身

#include <iostream>
#include <cstring>

using namespace std;

/**
* 取地址方式的互换
* @param number1 地址
* @param number2 地址
*/
void numberChange(int *number1, int *number2) {
int temp = 0;
temp = *number1;
*number1 = *number2;
*number2 = temp;
}

/**
* C++提倡的引用
*/
void numberChange2(int &number1, int &number2) {
cout << "n1地址:" << &number1 << " n2地址:" << &number2 << endl; //n1地址:0x2079fff7dc n2地址:0x2079fff7d8
int temp = 0;
temp = number1;
number1 = number2;
number2 = temp;
}

int main() {
int number = 100;
int number2 = 200;
cout << "n1地址:" << &number << " n2地址:" << &number2 << endl; //n1地址:0x2079fff7dc n2地址:0x2079fff7d8
numberChange2(number, number2);
cout << "n1:" << number << " n2:" << number2 << endl;
return 0;
}

n1地址:0x2079fff7dc n2地址:0x2079fff7d8
n1地址:0x2079fff7dc n2地址:0x2079fff7d8
n1:200 n2:100

常量引用

给引用添加const 关键字就表明是个常量引用 表示不允许通过引用名去修改变量的值。注意:变量被修改后,常量引用的值和变量的值一致,因为不管是常量引用还是引用都和目标变量的内存地址一样,自然值也是一样

int main() {
// 常量引用
int p = 11;
const int &pr = p;// 常量引用,引用的变量不能通过别名去修改
//pr = 22;// 常量引用:不允许引用/别名去修改变量的值
p = 22;// 当p被修改,那么pr也会能到最新的值,因为引用就是变量的本身
cout << p << pr << endl;// p=22 pr=22

return 0;
}

2222


举报

相关推荐

0 条评论