全网vip视频网站怎么做,网站开发图片压缩上传报酬,宣威网站,wordpress积分 充值指针基础
在C中#xff0c;指针是至关重要的组成部分。它是C语言最强大的功能之一#xff0c;也是最棘手的功能之一。
指针具有强大的能力#xff0c;其本质是协助程序员完成内存的直接操纵。
指针#xff1a;特定类型数据在内存中的存储地址#xff0c;即内存地址。
…指针基础
在C中指针是至关重要的组成部分。它是C语言最强大的功能之一也是最棘手的功能之一。
指针具有强大的能力其本质是协助程序员完成内存的直接操纵。
指针特定类型数据在内存中的存储地址即内存地址。
指针只是一个逻辑概念其实际应用是指针变量如变量p就是指针变量。
指针变量的定义语法
1.先声明后赋值
int num 10;int* p;
p num;
2.声明和赋值同步
int num 10;
int* p num
变量类型如上int表示指针内存地址指向的内存区域存放的是整型数据
*符号有两种含义 - 声明时*p表示变量p是指针变量存的是内存地址 - 使用时*p表示取指针p执行内存区域的数据
cout p; //输出num变量地址
cout *p; //输出数据10
符号表示取变量内存地址是一个取内存地址的单目操作符 细节 说明 示例 指针变量类型 说明指针指向区域的数据类型 int *p; 指针指向区域存放int *符号在声明时 指代变量为指针变量 int * p; *符号在使用时 取指针指向内存区域的数值 *p 表示数字10 符号 取内存地址 num取num变量内存地址
野指针
野指针被声明但未初始化赋值的指针。这个指针会指向随机的内存空间可能导致未知问题。
野指针仅声明未赋值的指针。不可应用因为其指向的内存区域是随机的、未知的。
普通变量是对数值进行操作不会有安全问题所以没有“野变量”一说。
指针对内存直接操作所以一旦声明但未赋值就是“野指针”一旦使用后果不可预料。
int * p; // 声明指针分配了8字节空间, p是野指针因为未被赋值
*p 10; // 将10赋予指针p所指向的空间//*p 10; 是向未知的、随机的4字节内存区域修改存储值为10 空指针
为避免野指针应养成良好的变成习惯及时初始化或将指针置为空指针更为安全。
int* p NULL;
int* p nullptr; •NULL是C内置的宏表示”空、什么都没有”的含义其本质是0 •nullptr是C11标准引入的关键字表示指针为空 空指针只在需要指针但需要延迟赋值的场景下作为过渡使用。
空指针将指针赋值为“空”NULL、nullptr避免指向具体内存更加安全
空指针也不是正常的指针只是过渡指针最终要给与具体值否则就不要用指针。