C++指针理解

阅读 73

2022-03-12

C++指针理解

学习C++ 过程中指针一直是个难点,为了强化自己对其的理解,于此记录

指针的实质

了解指针之前,需要了解CPU如何找到需要的数据:

  1. CPU给出数据地址,32位机器会给出32位的地址,64位机器会给出64位地址。
  2. 找到此地址对应的内存块,取出相应的数据;

在C++中,如果声明一个变量,需要使用一个标识符,该标识符绑定了此变量的数据类型、对应的内存空间地址。

有了上述了解之后,可以有下面结论:

  1. 声明一个指针和声明一个变量是相同的:绑定数据类型、分配内存空间
  2. 给指针分配的是一个4或8字节的空间
  3. 指针的类型是为了确定间址时读取数据块的大小

结论 指针仍是一个变量,只不过此变量保存的是另一个变量的地址

指针的工作原理

可以看下面一段代码:

int a = 1;
int* p = &a;	//a取地址后,将地址赋给指针p
cout << *p << "   " << a << endl;

char* c = (char*) p;	//将指针p强制转换为char型的指针
cout << *c << "   " << *p << endl;

输出为:

1 1
   1

可以看到当使用指针获取一个变量时,会根据指针的类型来获取不同的空间,当为int时,间址时读取四个字节的内容,当为char 时会获取1个字节的内容。

指针的应用

  1. 应用于复杂的数据结构,例如: 使用指针来实现链表
  2. 函数参数的传递,有时使用指针传参可以减少内存的开销
  3. 动态内存分配

精彩评论(0)

0 0 举报