黑马程序员技术交流社区

标题: 怎么能彻底搞好指针 [打印本页]

作者: 杨奉泊    时间: 2015-12-6 19:58
标题: 怎么能彻底搞好指针

知道了指针式用来存储变量地址的 每个类型有每个类型的指针 * 是获取指针所指内存地址的值 但是 如果直 int a = 5; int *p = &a  printf(“%d”,p)这个对吗 输出的结果是什么啊 而且怎么搞懂什么时候代表什么啊
作者: konglong    时间: 2015-12-7 00:23
我也想知道
作者: 长厢厮守℡    时间: 2015-12-7 10:47
* 在定义指针变量的时候 是说明符,不是定义指针变量的时候是操作符  &是取地址符,与*是反作用。
作者: luoye111    时间: 2015-12-7 13:16
指针是存放地址的,运行的时候明显可以看到,指针内容是一组16进制数,长度较长,如果用%d去输出简直不知道是什么玩意,指针说白了就是你是什么类型就要对应什么类型的指针,不然自加自减时含义完全不一样
作者: alen2015    时间: 2015-12-7 14:01
慢慢来,,,这个需要慢慢理解,,我之前学习的时候对指针和数组是晕乎乎的
作者: paul20150103    时间: 2015-12-7 20:01
画图去分析 , 好理解
作者: mackleforeversq    时间: 2015-12-7 20:26
本帖最后由 mackleforeversq 于 2015-12-7 20:28 编辑

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

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


作者: Flowerkanzhe    时间: 2015-12-7 21:56
this is a question
作者: AGHM0312    时间: 2015-12-7 22:04
赞一个,同问you
作者: 能不能行    时间: 2015-12-7 22:46
多用代码加画图
作者: springD    时间: 2015-12-7 23:29
#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的地址。


作者: iOS-lye    时间: 2015-12-8 00:08
这个问题值得好好思考
作者: 黑马。。肖锋    时间: 2015-12-8 07:39

慢慢来,,,这个需要慢慢理解,,我之前学习的时候对指针和数组是晕乎乎的




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