相亲网站开发,遵义网站建设方案,中山网站建设如何,山西免费网站制作1.指针和引用的区别 1.指针和引用的区别 a.指针是一个独立的变量, 专门用来存储另一个变量的内存地址; 指针本身占用内存空间, 可指向不同的变量(甚至空地址)b.引用是某个变量的别名(nickname)和原变量共享同一块内存空间, 没有自己独立的内存, 本质上…1.指针和引用的区别1.指针和引用的区别a.指针 是一个独立的变量, 专门用来存储另一个变量的内存地址; 指针本身占用内存空间, 可指向不同的变量(甚至空地址)b.引用 是某个变量的别名(nickname)和原变量共享同一块内存空间, 没有自己独立的内存,本质上是编译器层面的语法糖a.初始化差异#include iostreamusingnamespacestd;intmain(){inta10;// 指针可未初始化不推荐野指针int*p1;// 合法但p1指向随机地址野指针危险int*p2a;// 正确初始化// 引用必须初始化否则编译报错// int ref1; // 错误引用必须初始化intref2a;// 正确ref2是a的别名return0;}b.指向/绑定修改差异#include iostreamusingnamespacestd;intmain(){inta10,b20;// 指针可修改指向int*pa;cout*pendl;// 输出10pb;// 指针指向bcout*pendl;// 输出20// 引用不能修改绑定对象看似修改实际是修改原变量intrefa;coutrefendl;// 输出10refb;// 不是绑定b而是把b的值赋给aa变成20coutaendl;// 输出20coutrefendl;// 输出20ref还是a的别名return0;}c.空值与语法使用差异#include iostreamusingnamespacestd;intmain(){// 指针可空int*pnullptr;// 空指针合法if(pnullptr){coutp是空指针endl;}// 引用不能空以下代码编译报错// int ref nullptr; // 错误引用必须绑定到有效变量// 语法使用指针需要解引用引用直接用intnum100;int*p_numnum;intref_numnum;cout*p_numendl;// 指针解引用访问值输出100coutref_numendl;// 引用直接访问值输出100coutp_numendl;// 指针自身的地址独立内存coutref_numendl;// 引用的地址 原变量num的地址无独立内存return0;}d.const修饰的差异#include iostreamusingnamespacestd;intmain(){intx5,y6;// const修饰指针两种场景constint*p1x;// 指向的内容不可改指针本身可改// *p1 10; // 错误p1y;// 正确int*constp2x;// 指针本身不可改指向的内容可改*p210;// 正确// p2 y; // 错误// const修饰引用限制引用的内容不可改constintrefx;// ref 10; // 错误不能修改const引用的内容x10;// 正确原变量可改引用值也会变coutrefendl;// 输出10return0;}