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; 错误
C++之引用的详解
#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; 错误