鱼C论坛

 找回密码
 立即注册
查看: 119|回复: 2

C语言指针的问题基础

[复制链接]
发表于 2024-4-19 19:02:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
就是C语言中 指针的那种输出 ** 和*有什么区别 在《带你学C,带你飞》的时候没看到解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-19 19:03:18 | 显示全部楼层
在C语言中,指针是一个非常重要的概念。指针表示一个变量或对象在内存中的地址。利用指针,我们可以直接访问或修改内存中的数据。

现在来解释一下`**`和`*`之间的区别:

`*`是用于声明指针变量时放在类型前面的符号,表示这个变量是一个指针。例如,`int *ptr;`声明了一个名为`ptr`的指向整数的指针变量。

当我们需要访问指针所指向的值时,我们使用`*`运算符。例如,`*ptr`表示取出`ptr`指针所指向的整数值。

接下来是`**`,这是用于声明指向指针的指针变量时放在类型前面的符号。例如,`int **pptr;`声明了一个名为`pptr`的指向指针的指针变量。

使用`**`的场景比较少见。通常情况下,我们可以使用单个指针就可以完成需要的任务。但是如果你需要操作指向指针的指针,那么可以使用`**`。

希望这能帮助你理解`**`和`*`的区别。如果你对指针还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-19 21:34:08 | 显示全部楼层
本帖最后由 jackz007 于 2024-4-20 00:12 编辑

        指针是一种特殊的整型数,用于指示变量在内存中的储存位置,其数值是内存地址的编码,其性质与仓库中货架挡位的编码相似,是为了迅速找到储存的货物而存在。
        之所以说指针是一种特殊的整型数,是因为这种变量所占据的内存空间取决于 CPU 的字长,对于 32 位程序而言,指针一律为固定的 32 位,每个指针占用的是 4 个字节,其类型等同于 unsigned int,对于 64 位程序而言,指针一律为固定的 64 位,每个指针占用的是 8 个字节,其类型等同于 unsigned long long。

        建议考察、运行下面的代码,通过对照源代码以及对应的屏显信息以加深对于指针的理解
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int k , * p , ** q           ;
  5.         k = 1234                     ;
  6.         p = & k                      ; // p 指向变量 k,p 所指向的内存中存放的是整数 k 的数值
  7.         q = & p                      ; // q 指向指针 p,q 所指向的内存中存放的是指针 p 的数值
  8.         printf("   k = %d\n" , k)    ;
  9.         printf(" * p = %d\n" , * p)  ; // * p  是整型数,用 %d 显示其数值
  10.         printf("** q = %d\n" , ** q) ; // ** q 是整型数,用 %d 显示其数值
  11.         printf("   p = %p\n" , p)    ; // p 是指针,用 %p 显示指针地址(变量 p 的数值,十六进制形式)
  12.         printf("   q = %p\n" , q)    ; // q 是指针,用 %p 显示指针地址(变量 q 的数值,十六进制形式)
  13.         printf(" * q = %p\n" , * q)  ; // * q 是指针,用 %p 显示指针地址(变量 * q 的数值,十六进制形式)
  14. }
复制代码

        编译、运行实况:
  1. D:\[exercise]\C>g++ -o x x.c

  2. D:\[exercise]\C>x
  3.    k = 1234
  4. * p = 1234
  5. ** q = 1234
  6.    p = 0105faf8   【注意】:p 是一个指针
  7.    q = 0105faf4   【注意】:q 是另一个指针
  8. * q = 0105faf8    【注意】:* q 就是指针 p

  9. D:\[exercise]\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 10:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表