打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++指针笔记

  下面随笔给出C++指针笔记。

内存空间的访问方式

  • 通过变量名访问

  • 通过地址访问

指针的概念

  • 指针:内存地址,用于间接访问内存单元

  • 指针变量:用于存放地址的变量

指针变量的定义

  • 例:

  static int i;

  static int* ptr = &i;

  • 例:

  *ptr = 3;

与地址相关的运算——“*”和“&”

  • 指针运算符

  • 地址运算符:&

指针变量的初始化

  • 语法形式

存储类型 数据类型 *指针名=初始地址;

  • 例:

  int *pa = &a;

  • 注意事项

    • 用变量地址作为初值时,该变量必须在指针初始化之前已声明过,且变量类型应与指针类型一致。

    • 可以用一个已有合法值的指针去初始化另一个指针变量。

    • 不要用一个内部非静态变量去初始化 static 指针。

指针变量的赋值运算

  • 语法形式

指针名=地址

注意:“地址”中存放的数据类型与指针类型必须相符

  • 向指针变量赋的值必须是地址常量或变量,不能是普通整数,例如:

    • 通过地址运算“&”求得已定义的变量和对象的起始地址

    • 动态内存分配成功时返回的地址

  • 例外:整数0可以赋给指针,表示空指针。

  • 允许定义或声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。

例: void *general;

指针空值nullptr

  • 以往用0或者NULL去表达空指针的问题:

    • C/C++NULL宏是个被有很多潜在BUG的宏。因为有的库把其定义成整数0,有的定义成 (void*)0。在C的时代还好。但是在C++的时代,这就会引发很多问题。

  • C++11使用nullptr关键字,是表达更准确,类型安全的空指针

例1 指针的定义、赋值与使用

 1 //sample1.cpp
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 int main() {
 8 
 9   int i; //定义int型数i
10 
11   int *ptr = &i; //取i的地址赋给ptr
12 
13   i = 10; //int型数赋初值
14 
15   cout << "i = " << i << endl; //输出int型数的值
16 
17   cout << "*ptr = " << *ptr << endl; //输出int型指针所指地址的内容
18 
19   return 0;
20 
21 }
22 
23 运行结果:
24 
25 i = 10
26 
27 *ptr = 10

例2 void类型指针的使用

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main() {
 6 
 7 //!void voidObject; 错,不能声明void类型的变量
 8 
 9   void *pv; //对,可以声明void类型的指针
10 
11   int i = 5;
12 
13   pv = &i; //void类型指针指向整型变量
14 
15   int *pint = static_cast<int *>(pv); //void指针转换为int指针
16 
17   cout << "*pint = " << *pint << endl;
18 
19   return 0;
20 
21 }

指向常量的指针

  • 不能通过指向常量的指针改变所指对象的值,但指针本身可以改变,可以指向另外的对象。

   int a;

  const int *p1 = &a; //p1是指向常量的指针

  int b;

  p1 = &b; //正确,p1本身的值可以改变

   *p1 = 1; //编译时出错,不能通过p1改变所指的对象

指针类型的常量

  • 若声明指针常量,则指针本身的值不能被改变。

  int a;

  int * const p2 = &a;

 

  p2 = &b; //错误,p2是指针常量,值不能改变

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言指针导学(2)
static_cast<void*> 及 C++字符指针解惑
精心整理的C语言面试题目
C 总结:C 中的const和constexpr
const 用法总结(C++)
C语言经典笔试题(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服