查看: 2561|回复: 4

[其他] 每天解决一个问题35-1: 帮学弟解一道指针的题

[复制链接]
  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
    发表于 2015-9-28 00:16:00 | 显示全部楼层 |阅读模式
    本帖最后由 jinyi7016 于 2015-9-28 20:02 编辑

    背景
    问以下程序的运行结果是什么?
    1. char a[4]={1,2,3,4};
    2. char *ptr=(int*)(&a+1);
    3. printf("%d",*(ptr-1));
    复制代码
    解决
    初步看,结果好象是3,为了确定 一下,在K60上运行了一下,结果是4
    回过头来分析一下。
    1. int a[4]={1,2,3,4};  // a:数组第一个元素的地址,就是 a[0]的地址;   
    2. int *ptr=(int*)(&a+1); // &a+1:下一数组的首地址,即(int)&a+4*sizeof(int) ,ptr 等效于  &a[4]
    3. printf("%d",*(ptr-1));//ptr-1 就  等效于   &a[3]  ,加上* 取内容,那么结果就是
    复制代码
    延伸
    a+1是指的数组的第2个元素,就是a[1]=2,
    &a+1可就不是这个意思了,这里我也弄混了。
    指针还真不是好玩的啊。
    下面这个的呢
    1. char *p="freescale";
    2. p[1]='m';
    3. printf("%s",p);
    复制代码
    有知道的么?


    我知道答案 目前已有4人回答
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1845
    最后登录
    2020-8-25
    发表于 2015-9-28 10:44:40 | 显示全部楼层
    最后一个,p指向的内容不能被改变!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-28 11:08:46 | 显示全部楼层
    char型咋变成的int型?
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
     楼主| 发表于 2015-9-28 20:03:33 | 显示全部楼层
    JackieLaura 发表于 2015-9-28 11:08
    char型咋变成的int型?

    不是int型,是int的指针。
    强制转换啊。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-29 11:15:32 | 显示全部楼层
    jinyi7016 发表于 2015-9-28 20:03
    不是int型,是int的指针。
    强制转换啊。

    char型数组变成了int型数组了。。。
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-11-5 03:31 , Processed in 0.103750 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表