已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: @老虎会游泳

作者: @Ta

时间: 2014-03-10

点击: 467

# include <stdio.h>
int main(void)
{
int a[5]={0,1,2,3,4};
printf("%#X   %#X \n",a,a[0]);//输出结果0XBEA1AA60   0 为什么视频教程上说a和a[1]的地址是一样的,他的环境是vc6.0输出
    printf("%#X     %#X",&a,a[2]);//数组真的是地址吗?a和&a得到的地址是一样的,而a[2]和&a[2]得到的地址是不一样的 
    //a[0] 就是0 a[1]就是OX1 a[2]就是OX2…以此类推 而a[5]以上都是0
   // 我的结论:a就是地址 不需要用取地址符 而a[0]的地址不等于a,OX1你认为是地址吗?我不信 所以a[0]不等于地址,需要取地址符

}
@老虎会游泳

[隐藏样式|查看源码]


『回复列表(2|隐藏机器人聊天)』

1. 虽然你只@了老虎,但是我也想回复下。a和a[0],怎么说呢,a代表一个变量,里面存的是一个整形数组的起始地址(也就是a[0]的【地址】),仔细阅读括号里的内容,a和a[0]不一样,a里面存的是地址,而a[0]里面存的是整形数字。
现在说下为什么会出现你写的输出结果。所以既然a里面存的是数组地址,输出也会说地址;a[0]中的[]是有意义的,可以随即访问内存中的数组并【取出其值】。你可以将后面的a[0]改为&a[0](& 表示取址操作符,会得到a[0]本身的地址),可以看到a和&a[0]的值是一样的。
(/@Ta/2014-03-10 14:32//)

2. @春风沉醉的晚上,噢 原来如此
(/@Ta/2014-03-10 15:34//)

回复需要登录

8月26日 03:02 星期二

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1