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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨奉泊 中级黑马   /  2015-12-6 19:58  /  1671 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


知道了指针式用来存储变量地址的 每个类型有每个类型的指针 * 是获取指针所指内存地址的值 但是 如果直 int a = 5; int *p = &a  printf(“%d”,p)这个对吗 输出的结果是什么啊 而且怎么搞懂什么时候代表什么啊

12 个回复

倒序浏览
我也想知道
回复 使用道具 举报
* 在定义指针变量的时候 是说明符,不是定义指针变量的时候是操作符  &是取地址符,与*是反作用。
回复 使用道具 举报
指针是存放地址的,运行的时候明显可以看到,指针内容是一组16进制数,长度较长,如果用%d去输出简直不知道是什么玩意,指针说白了就是你是什么类型就要对应什么类型的指针,不然自加自减时含义完全不一样
回复 使用道具 举报
慢慢来,,,这个需要慢慢理解,,我之前学习的时候对指针和数组是晕乎乎的
回复 使用道具 举报
画图去分析 , 好理解
回复 使用道具 举报
本帖最后由 mackleforeversq 于 2015-12-7 20:28 编辑

这个结果打印的是指针内容,而不是a里数字5如果要打a的值 printf("%d",*p);

这种问题还是建议实际操作一下,最有效果

回复 使用道具 举报
this is a question
回复 使用道具 举报
赞一个,同问you
回复 使用道具 举报
多用代码加画图
回复 使用道具 举报
#include <stdio.h>
int main(){
   
    int a = 5;
   
    int *p = &a;
   
    printf("%d\n",*p);

    printf("%p\n",p);
}

打印结果:5
                   0x7fff5fbff7dc

第一个printf打印的是指针p指向的变量a,变量a的值为5;
第二个printf打印的是指针p本身存储的值,是指向的变量a的地址。

回复 使用道具 举报
这个问题值得好好思考
回复 使用道具 举报

慢慢来,,,这个需要慢慢理解,,我之前学习的时候对指针和数组是晕乎乎的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马