*和**两种指针用什么不同
时间: 2024-08-16 20:09:17 浏览: 30
在大多数编程语言中,`*` 和 `**` 都是用来表示指针的,它们的区别在于指针的层级:
1. `*`(星号):单星号是指向单个元素的指针。当你在一个变量前加上`*`,它会返回那个变量的地址(对于基本数据类型如int、float等,实际上是存储该类型的内存地址),而不是变量本身。例如,`int *ptr`是一个int型的指针,它存储的是一个int变量的实际内存地址。如果你想获取指针所指向的值,你需要对它解引用,也就是`(*ptr)`。
2. `**`(双星号):双星号则表示二级指针,也叫指向指针的指针。当你在一个已经指向其他变量地址的指针前加上`**`,你会得到那个指针指向的变量的地址。换句话说,`**ptr`就是指向第一个指针所指向的那个int变量的内存地址。这在需要处理动态数组或者更复杂的数据结构层次时常见,比如链表的头结点往往包含下一个节点的指针,而`**`可以让你访问链表中的实际元素。
总结来说,`*`用于直接访问内存中的数据,`**`则是访问通过第一个指针间接指向的内存中的数据。在实际应用中,理解这两种用法对于高效和安全地管理内存以及复杂数据结构至关重要。