c语言 * 和 **型指针

本文介绍了C语言中指针类型的使用,包括声明与赋值的区别、*与**的意义,以及如何利用&和*进行操作。通过示例解释了int *和int **类型的指针如何声明、赋值以及它们所指向的对象类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于C语言的指针类型,有点乱,测试了一下。
了解到:
1.声明赋值与非声明赋值
2. * 与 ** 的区别与意义
3. 一些 & 和 * 的利用方法

int * b=<value>,在这里b是int型指针
声明时候需要加 * ,但是声明时赋值还是赋值给 b的
也就是 int *b =<value> 等价于 int *b, b =<value> 这两句
有声明时赋值可以拆为两句看

另外 直接输出b是b指向的对象的地址,
例如int *b =&c //(c=2)
b就是c的地址
*b就是取c的值—>2
b=&c与 *b=c是等效的

注意b声明是int *型指针,那么只能指向 int型的对象

int ** a=&b
与 * 类似
声明时int ** a=&b等价于 int ** a, a=&b两句
a=&b 等价于 *a =b
但是这里 a 声明是int **型指针,只能指向 int *型 的对象
也就是 b 必须是int *型

本人测试代码</

### C语言指针与二级指针的概念 #### 单级指针 单级指针用于保存另一个变量的地址。声明形式如下所示: ```c int a = 10; int *p = &a; ``` 这里`*p`表示指针所指向位置存储的内容,而`&a`则代表取变量`a`的地址[^4]。 对于任何基本数据类或者自定义的数据类都可以创建对应的指针来间接访问这些类的对象。例如整、字符以及结构体等。这种特性允许程序员能够更加灵活地处理内存中的数据,提高程序执行效率并减少不必要的资源浪费[^1]。 #### 双重(二级)指针 双重指针是指向指针本身的指针,即它储存的是一个指针变量的地址而不是普通变量的地址。定义方法是在类前加上两个星号(`**`): ```c char c = 'A'; char *pc = &c; // pc 是指向 char 类的一级指针 char **ppc = &pc; // ppc 是指向一级指针 pc 的二级指针 ``` 使用双重指针可以让函数修改传入参数的实际值,因为可以通过改变该指针指向的位置进而影响到原始变量;另外,在动态分配多维数组时也会经常遇到这种情况。 ### 应用场景对比 - **单级指针的应用** - 访问操作其他变量的值而不必复制整个对象。 - 实现对大结构体或类实例之间的共享引用关系。 - 构建复杂的数据结构如链表、树形结构等,其中每个节点都含有指向下一个/子节点的链接字段[^3]。 - **双层指针的应用** - 修改调用者提供的指针本身,比如在某些情况下需要调整原有指针指向新的目标。 - 动态管理二维或多维数组的空间布局,特别是在涉及字符串处理或是图像像素矩阵等领域更为常见。 - 设计回调接口或其他高级编程模式下传递可变数量或种类各异的对象集合给接收方进行进一步加工处理[^5]。 综上所述,理解如何恰当地运用这两种级别的指针有助于编写出性能更高且更具灵活性的C代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值