DFSstar 2023-11-29 10:57 采纳率: 75%
浏览 0

C拿着指针指着我的头

终于感觉能把指针搞懂了,请大家看看,我这么理解对不?

int main() {
    int x = 12;        //声明并初始化x 
    int *p = NULL;        //声明一个一级指针p 
    int **ptr = NULL;    //声明一个二级指针ptr 
    
    p = &x;                //p指向x 
    ptr = &p;            //ptr指向p 
    
    printf("x is %d \n", x);            //x的值 
    printf("&x is %x \n", &x);            //x的地址 
    printf("p is %x \n", p);            //p存放的地址 
    printf("*p is %d \n", *p);            //读取p存放的地址的值 
    printf("ptr is %x \n", ptr);                //ptr存放的地址 
    printf("*ptr is %x \n", *ptr);        //ptr存放的地址的指针存放的地址 
    printf("**ptr is %d \n", **ptr);             //读取ptr存放的地址的指针存放的地址的值 
    printf("&p is %x \n", &p);            //一级指针p的地址 
    printf("&ptr is %x \n", &ptr);         //二级指针ptr的地址 
    
    return 0; 
} 

想不动了,再想要秃了

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-29 12:40
    关注

    【以下回答由 GPT 生成】

    我会尽力帮助你理解关于C语言指针的程序代码。首先,我会给出一个示例代码,并解释其中涉及到的指针、地址和值的关系以及各个变量和指针的作用。

    示例代码如下:

    #include <stdio.h>
    
    int main() {
        int number = 10; // 定义一个整型变量number,并赋值为10
        int *ptr;       // 定义一个指向整型变量的指针ptr
        ptr = &number;  // 将指针ptr指向变量number的地址
    
        printf("值:%d\n", number);     // 打印变量number的值
        printf("地址:%p\n", &number);  // 打印变量number的地址
        printf("指针所指的值:%d\n", *ptr);  // 打印指针ptr所指的值
        printf("指针的地址:%p\n", &ptr);    // 打印指针ptr的地址
    
        return 0;
    }
    

    这段代码中,我们首先定义了一个整型变量number,并赋值为10。接着,我们定义了一个指向整型变量的指针ptr。然后,我们将指针ptr指向变量number的地址,使用&运算符获取变量number的地址,并将其赋值给指针ptr。

    接下来,我们使用printf函数打印了一些信息。通过%d格式符,我们可以打印整型变量的值。通过%p格式符,我们可以打印地址的值(以十六进制方式显示)。在这个示例中,我们打印了变量number的值、变量number的地址、指针ptr所指的值、以及指针ptr的地址。

    请注意,在使用printf函数打印地址时,我们需要使用%p格式符,并将地址作为参数传递给printf函数。另外,在打印指针所指的值时,我们使用了*运算符,它用于解引用指针,获取指针所指向的值。

    希望这个示例代码和解释能够帮助你更好地理解指针、地址和值之间的关系,以及在程序中各个变量和指针的具体作用。如果你对其中的某些部分仍然感到困惑,请告诉我,我会尽力为你解答。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日

悬赏问题

  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大