指针的分类
int a = 10;
int* p = &a;
const int* p1 = &a;
int* const p2 = &a;
const int* const p3 = &a;
指针保存的是一个地址,定义指针是在内存中重新申请一个内存保存指向的地址,指针p要访问指向的地址的数据需要解引用*p
引用
引用是对已经存在的数据重新命名一个别名, 引用的本质是一个第二类指针,指向不可更改。 引用和指针不同的地方是:指针p保存的是地址,引用后的新标识符newName是保存的数值, 访问数据时指针使用*p,引用使用newName
测试代码
#include <iostream>
int* fun1(int *num)
{
*num += 100;
return num;
}
int& fun2(int& num)
{
num += 200;
return num;
}
int& fun3(int* num)
{
*num += 500;
return *num;
}
int main()
{
int num1 = 1;
int num2 = 2;
int num3 = 3;
int* p = fun1(&num1);
int p1 = fun2(num2);
int p2 = fun3(&num3);
std::cout << "num1:" << num1 << std::endl;
std::cout << "num2:" << num2 << std::endl;
std::cout << "num3:" << num3 << std::endl;
std::cout << "fun1返回值是指针:" << *p << std::endl;
std::cout << "fun2返回值是引用:" << p1 << std::endl;
std::cout << "sun3返回值是引用:" << p2 << std::endl;
system("pause");
return 0;
}
|