- 指针类型 必须 与指向的对象类型一致
- 根据类型声明分配内存大小
- * 左边为指向的类型
- 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<引用 C++之引用的详解
- 引用不分配存储空间,必须初始化,类型要与变量一致
- 引用一次只能定义一个变量
#include左值引用与右值引用(C++11)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; 错误欢迎分享,转载请注明来源:内存溢出
评论列表(0条)