结果是死循环,想想看究竟发生了什么?
#include "stdio.h"
int *p = NULL;
int *fFun(void)
{
int i = 0;
return &i;
}
void subFun(void)
{
(*p)--;
}
void gFun(void)
{
int j;
for(j = 0;j<10;j++)
{
subFun();
printf("%d/n",j);
}
}
int main(void)
{
p = fFun();
gFun();
}
另附:
1.下面这个程序的输出结果是什么(你应该很眼熟,就是在这个论坛里拷的:))?
#include <stdio.h>
int main(int argc,char **argv)
{
int count = 4;
int k;
int i = 0xFEDCBA98;
unsigned char * ptr = (unsigned char *)&i;
for(k = 0;k<4;k++)
{
printf("content at adress %p: 0x%x/n",ptr,*ptr);
ptr++;
}
return 1;
}
2.对于一段程序你想知道他的运行结果你会采取什么手段?
a.用编译器手册来解释。
b.编一段程序在机器上跑。
c.用标准来解释。
3.C语言=C语言的实现吗?
很显然,出题的人没分清楚什么是语言什么是语言的实现(programming language and programming implementation)。C语言的标准化已经做的很完善了,但不至详细得于连局部变量是如何实现的都作出规定。其实C语言的对象布局是最简单的(接近于汇编),但正因为简单,容易令程序员在自以为正确的情况下犯错误。我不止一次看到过某些高手认为结构体中的变量的排列是顺序的并且是连续排列的,结构体的大小等于各成员变量大小的合计......。下面有一句话,虽然是说C++实现的,但是对于C我想同样适用。
The C++ standard does not mandate details such as the ordering of either base class subobjects or of data members across access levels. Neither does it mandate the implementation of either virtual functions or virtual base classes; rather, it declares them to be implementation dependent.
----------《Inside the C++ Object Model》
考官拿一个本身有毛病的程序来考人,只是在向人们展示什么叫做“无知的胆大”。
以前曾经遇到过一个公司,发现他们的项目中对结构的使用太大胆了(或者说是无知),项目是一个client/server模型的,client copy一个struct到报文里面,然后通过tcp/ip发给server,server收到后把这个struct拷贝出来,拿一个结构指针指向这个拷贝,接着就用这个结构指针去访问结构中的成员变量了。我看到了第一个感觉就是震惊。这样做问题太多了,首先是client/server的bit顺序和byte顺序的问题,其次是编译器对结构布局的问题。如果client/server用的是同样的cpu,os,编译器,OK,这样做绝对不会出问题,但是这几乎是不可能的。
我前面出了一道题:
对于一段程序你想知道他的运行结果你会采取什么手段?
a.用编译器手册来解释。
b.编一段程序在机器上跑。
c.用标准来解释。
这道题是出自Programming Languages Design and implementation。书中说到,大部分人会采取a.b两种方式解决问题,“极少人”会采取c方式。当有异议的时候还是拿出标准来说话,微软是软件的老大,但是也避免不了要吃官司,不要在“权威”面前屈服,这是我做人的哲学。今天先说到这里,下次有空我用C standar去解面试那道题。我先把C/C++ standar传上去,本版的那个C standar是没有书签的,我这个排版要好些。
分享到:
相关推荐
对于初学者学C语言,是非常好的一道题目的
一道C语言习题,第四章里面的一道习题,将相关的答案自己的理解自己做出来
题目 有下面这样的一个二维表,请将其使用二维数组输出 姓名 语文 数学 英语 ...与几位童鞋交流了一下发现他们都把汉字单独拿出来了,只用数组存储的成绩,我觉得有点欠那么点意思,于是歪门邪道了一下,具体看下面...
C语言的一道循环题2.docx
C语言的一道循环题1.docx
本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题),但由于...
说明:本题库是针对2008年4月份考试的上机考试题库,本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,...
一道关于C语言程序的题 程序题main(){ float a,b; char c; printf("input expression: a+(-,*,/)b \n"); switch() { case '+': printf("%f\n",a+b);break; case '-': printf("%f\n",a-b);break; case '*': ...
088 马克思手稿中的数学题 C语言源代码文件
已知某个班有n(1)个学生,输入每行为学生姓名(最多20个字符)和其c语言成绩(0~100),请按照成绩从高到低排序后输出。若有相同的,不能改变其顺序。
:本题库是针对 2014 年 3 月份考试的上机考试题库,本题库共有 100 套题目( 每套题 目包含 3 道题:一道程序填空题、一道程序修改题、一道程序设计题 ) ,真实考试的时候, 考生输入准考证后计算机随机为你抽取...
C语言面试的陷阱题,为面试者打通一道绿门
C语言数独代码,(横向输入一道数独题),即可得出所有可能的情况
二级C语言上机考试题库,本题库是针对2008年4月份考试的上机考试题库,本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题)
说明:本题库是针对2010年3月份考试的上机考试题库,本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,...
C语言实现随机出10道整数加法题供用户计算
计算机二级校园网新视野C语言上机一道题库答案.pdf
这是一个我在高中时自己编写的一个简单的程序,就是用c编写的
本题库是针对2008年4月份考试的上机考试题库,本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个...
游戏区中的每个小鸟上都有一道算术题,小鸟从左向右飞,飞到游戏区右端后再从左侧出来。 控制区有“增加”、“删除”、“退出”按钮,扩展功能所需的按钮也显示在此区域,例如“存状态”、“导入”等按钮。 信息...