A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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 呢?? 我试了下其它几种方式, 都不对

4 个回复

倒序浏览
**p是name的地址,自然*p就是name的数据值啊
回复 使用道具 举报
raink001 发表于 2016-3-6 00:20
**p是name的地址,自然*p就是name的数据值啊

那么 printf("%s----%d\n",*p,*p1);中age所对应的*p1怎么解释呢? 就是这里搞不明白.
觉得*name跟age始终应该不一样
回复 使用道具 举报
从心开始の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:22
报纸
学习来了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马