黑马程序员技术交流社区

标题: C语言一些易犯错误的整理(3) [打印本页]

作者: 林哲生10    时间: 2016-8-3 22:59
标题: C语言一些易犯错误的整理(3)
(1)下面代码有问题吗?
#include <stdio.h>
int a;
int a = 10;
int main()
{
    return 0;
}
答案:没有问题
解析:不知如何解释...全局变量的规定吧,下面就有问题:重复定义变量了
#include <stdio.h>
int a = 10;
int a = 20;
int main()
{
    return 0;
}

(2)

答案:D
解析:主要是分清a +1 和&a +1 的区别.
a是数组名,代表第一个元素的地址,由于元素是int类型的,a+1表示a存储的地址加上4个字节,加完后的地址是数组第二个元素的地址.
&a代表的不是第一个元素的地址,而是整个数组的地址,由于数组有5个int类型的数据,&a + 1表示a存储的地址加上20个字节,加完后的地址是比数组第五个元素的地址大4个字节,而(int *)(&a + 1)把这个以数组所占字节为单元进行加减的地址强转为以int所占字节为单元进行加减的地址.因此p-1代表数组第5个元素的地址

作者: 悄然林静    时间: 2016-8-3 23:10
第二题说的很详细,赞~~




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