目录
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
C++中的指针变量(pointer)是一种特殊的变量,它存储了另一个变量的地址。指针变量可以指向任何变量,包括局部变量、全局变量、数组元素、结构体成员等。
指针变量的声明格式如下:
类型* 指针变量名;
其中,类型
是指针变量所指向的变量的类型,指针变量名
是指针变量的名称。
例如,以下代码声明了一个指向整数变量的指针:
int* p;
此时,p
指针变量还没有指向任何变量。
指针变量可以通过以下方式进行初始化:
指针变量名 = 变量地址;
例如,以下代码初始化了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
在实际使用中,应根据具体需求选择合适的指针类型。