指针究竟是什么是地址还是类型

Yang 640

指针(pointer)和 int,char 类似,是一种独立的数据类型。区别在于,当我们说“指针”时,其实是说一系列的数据类型(泛指),就像我们说“数值型数据类型”,也是泛指(包括  int, float, double 等等)。

一、指针是地址吗

不是。指针(pointer)和 int,char 类似,是一种独立的数据类型。区别在于,当我们说“指针”时,其实是说一系列的数据类型(泛指),就像我们说“数值型数据类型”,也是泛指(包括  int, float, double 等等)。当我们具体说 “int 型指针”时,我们是说 int*(而不是 float* 或者 double*),就像是指出了数值类型中的某一个具体类型(例如 int)。下面以 int *a = &b; 为例,并假设这行代码的运行环境下,int 为 4 字节长。

指针本身具有独立的数据类型,我们可以用这个类型声明一个变量并赋值,只不过指针所对应的变量用途比较特殊,是用来保存某个内存地址的。也就是说,指针本身占用了一小块内存空间(它本身不是地址,地址就是一串数字,完全不搭边儿),而这块内存空间是用来写入一个地址数据的。

延伸阅读

一、指针有哪些应用场景

指针的应用场景包括但不限于:

1、动态内存分配

指针可以用于动态内存分配,例如在 C 和 C++ 中使用 malloc() 和 free() 函数。

2、数组和字符串

指针可以用于数组和字符串的访问,例如在 C 和 C++ 中使用 char* 类型的指针来访问字符串。

3、函数参数和返回值

指针可以用于函数参数和返回值,例如在 C 和 C++ 中使用指针来传递数组或结构体。

4、数据结构

指针可以用于数据结构,例如链表、树和图等。

5、操作系统

指针可以用于操作系统编程,例如在 Linux 中使用指针来操作文件和网络套接字。

二、指针的优缺点

指针的优点包括:

1、内存管理

指针可以用于动态内存分配和释放,可以更好地管理内存。

2、数据结构

指针可以用于数据结构,例如链表、树和图等。

3、函数参数和返回值

指针可以用于函数参数和返回值,可以更好地处理大型数据结构。

4、操作系统

指针可以用于操作系统编程,例如在 Linux 中使用指针来操作文件和网络套接字。

指针的缺点包括:

1、内存安全

指针可能会导致内存安全问题,例如空指针、野指针、缓冲区溢出等。

2、数据竞争

指针可能会导致数据竞争问题,例如多个线程同时访问同一个内存地址。

3、难以调试

指针可能会导致程序难以调试,例如使用野指针可能会导致程序崩溃或不可预测的行为。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部