当前位置: 首页 > news >正文

中兴面试C语言题1

发信人: thebestone (Simple life), 信区: C
标 题: 【合集】中兴面试C语言题
发信站: 饮水思源 (2002年01月20日17:20:51 星期天), 站内信件

☆──────────────────────────────────────☆
assembly (assembly) 2001年11月13日11:13:42 星期二 提到:

〖 以下文字转载自 job 讨论区 〗
〖 原文由 jackjun 所发表 〗

发信人: ldldld (流云), 信区: Career
标 题: 中心面试c语言题,我没答出来
发信站: BBS 水木清华站 (Mon Nov 12 15:38:17 2001)

请问下面程序是否有错
int loop;
int a[5],*p;
void main()
{
p=a;
for(loop=0;loop<5;loop++)
{
p++;
*p=loop;
}
}

☆──────────────────────────────────────☆
thinker (thinker) 2001年11月13日11:16:15 星期二 提到:

loop==4 时候越界


☆──────────────────────────────────────☆
legendcorba (legendcobra) 2001年11月13日11:24:27 星期二 提到:

严格说来,也没有错呀。

☆──────────────────────────────────────☆
assembly (assembly) 2001年11月13日11:29:58 星期二 提到:

试了一下
freebsd4.3 loop>=2667出错
mandrake 8.0 loop>=624出错
debian 2.2.19 loop>=627出错
win2000 msvc6 loop>=5出错
似乎m$的检查更严格


☆──────────────────────────────────────☆
assembly (assembly) 2001年11月13日11:32:49 星期二 提到:

win2000下,执行时显示访问内存错误


☆──────────────────────────────────────☆
rabbit (Victor) 2001年11月13日12:31:27 星期二 提到:

能详细说一下“越界”是怎么回事吗?


☆──────────────────────────────────────☆
helic (大恶人) 2001年11月13日13:27:11 星期二 提到:

我在2000下也跑了一遍, 没有问题的说。 不过直接写指针总是不好的啦。改成像
*(p+loop)=loop;会比较规范。


☆──────────────────────────────────────☆
howe (无痕) 2001年11月13日13:32:14 星期二 提到:

你没有被录取
这个程序的赋值结果不会符合编程者的原意.
编译后运行会不会出错与编译器极其设置有关.
就算运行不出错,最后p很有可能指向地址0x4.


☆──────────────────────────────────────☆
helic (大恶人) 2001年11月13日14:00:09 星期二 提到:

不会指向0x4. 编译器在分配内存给int a[5]的时候不会分配到0, 除非内存不够了。而
p是指向这段内存的。也不会指到0x4去吧。


☆──────────────────────────────────────☆
law (游戏*人生) Tue Nov 13 14:23:54 2001) 提到:

hehe, 有可能是p = 4
也有可能是total = 4;
这要看编译器怎么在栈里放局部变量了。


☆──────────────────────────────────────☆
howe (无痕) 2001年11月13日14:26:11 星期二 提到:

loop==4时,对*p的赋值是越界的,但是
如果编译器分配内存时连续分配的话
a[5]就是p, 所以此时*p就是p,也就是说,
此时p指向的就是自己的地址
这时给*p赋值4,就把p指向了0x4


☆──────────────────────────────────────☆
helic (大恶人) 2001年11月13日15:30:07 星期二 提到:

不好意思,是我没有看仔细,再看了一遍, 当loop==4时, p指向a[5], 而不是a[4],
这样的程序真令人ft.


☆──────────────────────────────────────☆
victor (victor) 2001年11月13日15:35:13 星期二 提到:


谢谢提醒,刚才我也没看明白,以为还在a[4]呢
现在懂了


☆──────────────────────────────────────☆
huaihuai (坏坏◎/\◎不要离我太近!) 2001年11月13日15:42:06 星期二 提到:

nod.本来我在job板也是这么说的,
后来一位老兄硬是指摘偶的不是,害的我不得不学习了一下cygwin下
gdb的用法,结果发现有时候即使指针指到a[7]也不会出错,
原来是因为cygwin下面的gcc在分配变量内存的时候会按16字节节对齐,
估计其他编译器也可以这样。而且记得好像有#programma语句或者
是编译开关可以关掉节对齐的。那样就……。


☆──────────────────────────────────────☆
robinhan (无情网客) 2001年11月13日17:44:48 星期二 提到:

不可能。我试过的可以啊。没错呀。

☆──────────────────────────────────────☆
yuanziying (小元) 2001年11月13日20:13:53 星期二 提到:

恐怕中心面试的人也不会想到那么多。



☆──────────────────────────────────────☆
bgee (★★★★★) 2001年11月16日11:20:36 星期五 提到:

当p=a时,表示指针p指向数组a的这一事实。

当loop==4时,p却指向了数组a之外去了。

也许这是C程序最忌讳的事情了吧?

相关文章:

  • Goexit
  • 中兴面试C语言题(2)
  • golang定时器
  • Intel的笔试,大家看来都不想交白卷
  • go里面select使用
  • golang以打印机为例 互斥锁的问题 使用channel解决
  • 几道面试题
  • golang读写锁简单例子
  • 急问数据结构用c c++描述的区别?
  • golang条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源
  • 华为面试题3
  • golang多个消费者访问共享数据
  • 创建第一个区块001
  • c语言常见出错信息(转)
  • 创建我的第一个区块链002
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 10个确保微服务与容器安全的最佳实践
  • CSS魔法堂:Absolute Positioning就这个样
  • Flex布局到底解决了什么问题
  • iOS 颜色设置看我就够了
  • js作用域和this的理解
  • maya建模与骨骼动画快速实现人工鱼
  • ng6--错误信息小结(持续更新)
  • TCP拥塞控制
  • Vultr 教程目录
  • 产品三维模型在线预览
  • 回顾 Swift 多平台移植进度 #2
  • 如何使用 JavaScript 解析 URL
  • 实习面试笔记
  • 详解移动APP与web APP的区别
  • 一些关于Rust在2019年的思考
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • # Maven错误Error executing Maven
  • # 计算机视觉入门
  • ###C语言程序设计-----C语言学习(3)#
  • #define,static,const,三种常量的区别
  • #单片机(TB6600驱动42步进电机)
  • ${factoryList }后面有空格不影响
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)STL算法之元素计数
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (多级缓存)缓存同步
  • (五)IO流之ByteArrayInput/OutputStream
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • ./configure,make,make install的作用
  • .NET MVC 验证码
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 常见的偏门问题
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET命令行(CLI)常用命令
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国