【C++】基础 | 指针与引用
作者:互联网
指针
- 指针类型 必须 与指向的对象类型一致
- 根据类型声明分配内存大小
- * 左边为指向的类型
- void* (无类型指针) —— 能保存一个内存地址,与数据类型无关。要先转换类型,才能访问其所指内存区域的数据
int i = 4, *pi = &i; //创建一个指向 对象i (int 类型) 的指针pi
double d = 9.4, *pd = &d;
void* pv;
pv = &i;
pv = pi;
pv = pd;
cout << *(double*)pv << endl; //先将void*类型的pv转换成double*类型
//再访问指向内存的数据
// cout<<*pv<<endl; 错误
引用
- 引用不分配存储空间,必须初始化,类型要与变量一致
- 引用一次只能定义一个变量
#include <iostream>
using namespace std;
//左值——>变量的内存区域
//右值——>保存在变量内存区域中的值
int main()
{
//1.普通变量引用 &引用名=变量名
int i = 9;
int& ir = i;
cout << "i addr :" << &i << " i value :" << i << endl;
cout << "ir addr :" << &ir << " ir value :" << ir << endl; //内存地址一样
//2.数组引用
int a[5] = {1, 2, 3, 4, 5};
int* b[5];
int(&ra)[5] = a; //①ra是一个引用 ②ra是具有5个元素的数组的引用
// int& ra[5]=a; //错误 ①ra是具有5个元素的数组 ②一次性定义5个引用名,错误
//(引用一次只能定义一个变量)
int& aa = a[0];
int* (&rpa)[5] = b;
//3.指针引用
int i=0;
int* pi=&i;
int* &pr = pi;//①pr是引用 ②pr是一个指向int的指针pi的引用
//int& *ip=i; //①ip是指针 ②ip指向的是一个引用× (引用无内存,指向不明)
}
左值引用与右值引用(C++11)
//1.左值引用
double r=10;
double& r1=r;
// double& r2=10; 错误
// double& r2=r+10; 错误
//2.右值引用
double&& r3=r+10;
// double&& r4=r; 错误
标签:int,double,C++,ra,引用,pi,指针 来源: https://blog.csdn.net/weixin_45720753/article/details/120787712