Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113975
  • 博文数量: 50
  • 博客积分: 968
  • 博客等级: 少尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-17 09:51
文章分类

全部博文(50)

文章存档

2012年(2)

2011年(48)

我的朋友

分类:

2011-05-17 10:32:58

原文地址:二道C语言笔试题 作者:luozhiyong131

/*

 *百度曾经的一道笔试题,

 *整理:Lzy  2011-5-15

 */

#include

 

int main()

{

    char *p = "lzy";

    *(p+1) = 'Z';

 

    printf("%s\n",p);

    return 0;

}

百度曾经的一道C语言笔试题,主要考察程序员对指针的理解。

问:编译能通过,但程序运行会出错!这是为会么呢?(为什么会这样呢)

答:因为指针p指向的是常量(char *p = "lzy"),不能给常量赋值(*(p+1) = 'Z';)

 

/*

 *华为曾经的一道笔试题,

 *整理:Lzy  2011-5-15

 */

#include

 

int *fun(void)

{

    int data = 5;

    return &data;

}

 

int main()

{

    int *p;

 

    p = fun();

    printf("%d\n",*p);

    printf("%d\n",*p);

 

    return 0;

}

 

华为曾经的一道C评议笔试题

问:两次输出结果是?Why?

答:第一次输出是5,这点毫无疑问。第二次输出的是初始化值(这值与环境有关),因为fun函数返回的地址是fun局部变量data的地址,当fun函数返回后分配的栈空间释放,访问时相应的内存空间被初始化,

阅读(662) | 评论(0) | 转发(0) |
0

上一篇:Vi Vim 快捷键

下一篇:Eclipse的使用

给主人留下些什么吧!~~