目录
[1.1 C++中的引用](#1.1 C++中的引用)
[1.2 C++中的指针变量(pointer)](#1.2 C++中的指针变量(pointer))
1.1 C++中的引用
C++中的引用(reference)是一种特殊的变量,它是某个已存在变量的另一个名字。引用变量与指针变量类似,但引用变量必须在声明时进行初始化,并且一旦引用变量与某个变量关联起来,就无法再与其他变量关联。
引用的声明格式如下:
类型& 引用变量名;
其中,类型
是引用变量的类型,引用变量名
是引用变量的名称。
例如,以下代码声明了一个名为a
的整数引用:
int& a;
此时,a
引用的变量尚未初始化。
引用变量可以通过以下方式进行初始化:
引用变量名 = 变量名;
例如,以下代码初始化了a
引用:
C++
int b = 10;
a = b;
此时,a
引用的变量为b
。
引用变量可以通过以下方式进行使用:
*引用变量名 = 值;
例如,以下代码将a
引用的值设置为20
:
a = 20;
此时,b
的值也将被设置为20
。
引用变量可以作为函数参数使用。当引用变量作为函数参数时,它将成为实参列表中相应变量的别名。对引用参数进行的任何更改都将真正更改正在调用它的函数中的变量。
例如,以下函数将两个整数进行交换:
void swap(int& left, int& right)
{
int tmp = left;
left = right;
right = tmp;
}
以下代码调用swap()
函数:
int a = 10;
int b = 20;
swap(a, b);
此时,a
和b
的值将被交换。
引用变量具有以下特点:
- 引用变量必须在声明时进行初始化,并且一旦引用变量与某个变量关联起来,就无法再与其他变量关联。
- 引用变量可以提高代码的可读性和可维护性。
- 引用变量可以提高程序的性能。
引用变量的使用场景包括:
- 作为函数参数,提高函数的可读性和可维护性。
- 作为函数返回值,提高程序的性能。
- 作为局部变量,提高程序的性能。
以下是一些使用引用变量的示例:
-
将引用变量作为函数参数:
void print(int& n)
{
std::cout << n << std::endl;
}int main()
{
int a = 10;print(a); return 0;
}
输出:
10
-
将引用变量作为函数返回值:
int& get_max(int a, int b)
{
if (a > b)
return a;
else
return b;
}int main()
{
int a = 10, b = 20;int& max = get_max(a, b); std::cout << max << std::endl; return 0;
}
输出:
20
-
将引用变量作为局部变量:
void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}int main()
{
int a = 10, b = 20;swap(a, b); std::cout << a << " " << b << std::endl; return 0;
}
输出:
20 10
1.2 C++中的指针变量(pointer)
C++中的指针变量(pointer)是一种特殊的变量,它存储了另一个变量的地址。指针变量可以指向任何变量,包括局部变量、全局变量、数组元素、结构体成员等。
指针变量的声明格式如下:
cpp
类型* 指针变量名;
其中,类型
是指针变量所指向的变量的类型,指针变量名
是指针变量的名称。
例如,以下代码声明了一个指向整数变量的指针:
cpp
int* p;
此时,p
指针变量还没有指向任何变量。
指针变量可以通过以下方式进行初始化:
cpp
指针变量名 = 变量地址;
例如,以下代码初始化了p
指针:
int a = 10;
p = &a;
此时,p
指针变量指向了a
变量。
指针变量可以通过以下方式进行使用:
*指针变量名 = 值;
例如,以下代码将p
指针指向的变量的值设置为20
:
*p = 20;
此时,a
变量的值也将被设置为20
。
指针变量可以作为函数参数使用。当指针变量作为函数参数时,它将成为实参列表中相应变量的地址。对指针参数进行的任何更改都将真正更改正在调用它的函数中的变量。
例如,以下函数将两个整数进行交换:
void swap(int* left, int* right)
{
int tmp = *left;
*left = *right;
*right = tmp;
}
以下代码调用swap()
函数:
int a = 10;
int b = 20;
swap(&a, &b);
此时,a
和b
的值将被交换。
指针变量具有以下特点:
- 指针变量可以指向任何变量。
- 指针变量可以被重新赋值,指向不同的变量。
- 指针变量使用不当可能会导致内存泄漏或其他安全问题。
指针变量的使用场景包括:
- 作为函数参数,提高函数的可读性和可维护性。
- 作为函数返回值,提高程序的性能。
- 动态内存分配,提高程序的灵活性。
以下是一些使用指针变量的示例:
-
将指针变量作为函数参数:
void print(int* n)
{
std::cout << *n << std::endl;
}int main()
{
int a = 10;print(&a); return 0;
}
输出:
10
-
将指针变量作为函数返回值:
int* get_max(int a, int b)
{
if (a > b)
return &a;
else
return &b;
}int main()
{
int a = 10, b = 20;int* max = get_max(a, b); std::cout << *max << std::endl; return 0;
}
输出:
20
-
动态内存分配:
int* p = new int(10);
std::cout << *p << std::endl;
delete p;
输出:
10
在实际使用中,应根据具体需求选择合适的指针类型。