黑马程序员技术交流社区

标题: 关于二级指针打印的问题 [打印本页]

作者: 从心开始のBean    时间: 2016-3-4 12:23
标题: 关于二级指针打印的问题
#include <stdio.h>
int main() {
    struct Person {
        char *name;
        int age;
    };
    struct Person xiaoming = {"heima",34};
    //xiaoming.name是指针类型,本来就是一个地址,故此处需要用到二级指针
    char **p = &(xiaoming.name);    //等价于&xiaoming.name
    int *p1 = &(xiaoming.age);      //等价于&xiaoming.age
    printf("%s----%d\n",*p,*p1);
    return 0;
}
想请问各位大大, 本题中最后打印时为什么是 *p 呢?? 我试了下其它几种方式, 都不对


作者: raink001    时间: 2016-3-6 00:20
**p是name的地址,自然*p就是name的数据值啊
作者: 从心开始のBean    时间: 2016-3-6 21:16
raink001 发表于 2016-3-6 00:20
**p是name的地址,自然*p就是name的数据值啊

那么 printf("%s----%d\n",*p,*p1);中age所对应的*p1怎么解释呢? 就是这里搞不明白.
觉得*name跟age始终应该不一样
作者: raink001    时间: 2016-3-9 11:06
从心开始のBean 发表于 2016-3-6 21:16
那么 printf("%s----%d\n",*p,*p1);中age所对应的*p1怎么解释呢? 就是这里搞不明白.
觉得*name跟age始终 ...
  1.         int *p3 = &p1;
  2.         printf("%d\n",&(xiaoming.age));
  3.         printf("p1的当前值(值为指针)%d, p1当前值所指向的内容是%d, p1指针的地址%d\n",p1,*p1,&p1);
  4.         printf("p3的当前值(值为指针)%d, p3当前值所指向的内容是%d, p3指针的地址%d\n",p3,*p3,&p3);
复制代码


运行下这段代码思考下
作者: dx206    时间: 2016-3-9 12:30
学习来了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2