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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a1301155262 中级黑马   /  2015-3-24 23:33  /  1480 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下代码输出什么?
main() {  inta[5]={};  int *ptr=(int*)( a+1);  
printf(“%d%d”,*(a+1),*(ptr-1));  }

7 个回复

正序浏览
Errors 中级黑马 2015-3-25 21:56:41
8#
数组里的值都是零,a + 1是数组的地址加1,指向a[1],a[1]的值也是零
回复 使用道具 举报
楼主你这段代码感觉特别混乱,但是也是可以的,你原来的代码结果是 00 , 看不出效果,我赋了两个值,输出结果是 21,楼主可以参考一下(顺便说一句,楼主原来的程序里,符号有不是英文的,注意一下)


int main()
{
    int a[5]={1,2};
    int *ptr=(int *)(a+1);//指针指向 a+1
    printf("%d%d\n",*(a+1),*(ptr-1));//ptr-1 指向 a+1 前一个地址,即a,所以是a[0]的值1
    return 0;
}
回复 使用道具 举报
默认为0,没用。
回复 使用道具 举报
int main(void)
{
int a[5] = {};  
int  * ptr;
ptr = ( a+1);  
printf(“%d%d”,*(a+1),*(a));
}
回复 使用道具 举报
tzp123 来自手机 中级黑马 2015-3-25 00:18:48
板凳
等我学习好了再来帮你解答
回复 使用道具 举报
数组里没有指,都是零吧
回复 使用道具 举报
inta[5]={} 你这里面应该要先赋初值吧    不然没意义的    怎么输都是0的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马