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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白0702 中级黑马   /  2015-6-9 22:09  /  1300 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>

int main(int argc, const char * argv[])
{
        char a[5]={'a','b','c','d','e'};
        int *p=&a;
        printf("%c,%c\n",*p,*(p+1));
        return 0;
}
为什么打印输出结果是a,e;应该死a,b才对的,求解。

4 个回复

倒序浏览
改为
  1. int *p = a;
复制代码
回复 使用道具 举报
p=&a
p+1会移动到&a[0]+sizeof(a[5])处
回复 使用道具 举报
晗修 发表于 2015-6-10 01:00
p=&a
p+1会移动到&a[0]+sizeof(a[5])处

看了老师讲的视频明白了,指针也分数据类型的,要与后面定义的数据类型相同,把int *p=&a,改为char *p=&a,就可以了,谢谢1
回复 使用道具 举报

现在明白了,不是你说的那个问题,是指针的类型必须与定义的类型要一致,把int *p=&a,改为char *p=&a就对了,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马