看看威盛的这几道笔试题!

oyscal 2005-06-06 04:53:26
1.三组程序,找出你认为的错误。
  (1)a.c long temp[255];
  b.c extern *temp;
  (2)a.c long temp[255];
  b.c extern temp[256];
  (3)a.c long temp[255];
  b.c extern temp[];
2.在第一个声明处编译出了奇怪的错误,为什么?
  #include <stdio.h>
  #include “myfun1.h”
  #include “myfun2.h”
  int myInt1;
  int myInt2;
3.printf(“0x%x”, (&0)[-1]); 请问打印了什么?

...全文
921 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
oo 2005-06-07
  • 打赏
  • 举报
回复
感觉楼主题目记的不全。
clear117 2005-06-07
  • 打赏
  • 举报
回复
期待所谓的标准答案
jxhwei 2005-06-07
  • 打赏
  • 举报
回复
第3题会出错,(&0)的操作企图取常量的地址,这是不可能的。

darkstar21cn 2005-06-07
  • 打赏
  • 举报
回复
1  (2)a.c long temp[255];
  b.c extern temp[256];


2 重复定义了


3 不能编译通过。
Amour81 2005-06-07
  • 打赏
  • 举报
回复
1.三组程序,找出你认为的错误。
  (1)a.c long temp[255];
  b.c extern *temp;
  (2)a.c long temp[255];
  b.c extern temp[256];
  (3)a.c long temp[255];
  b.c extern temp[];
选择3,因为第一个的两者访问方式不同,在编译器的层面上char [] 与 char *的存储方式并不相
同.char []不分配符号的存储空间,而是用一个符量常量
来指明数组的首地址,而char *则为指针分配了存储空间
这种差异可能会造成一些隐藏的问题.
第二个没这样的用法

剩下两题不知道为什么。。。


xnlcx 2005-06-07
  • 打赏
  • 举报
回复

UP
等待高手们的回答...
hikuers 2005-06-07
  • 打赏
  • 举报
回复
mark
qinjs 2005-06-07
  • 打赏
  • 举报
回复
mark!
ClintNorthwood 2005-06-07
  • 打赏
  • 举报
回复
等台湾回归了我再关注这个公司!
lalalalala 2005-06-07
  • 打赏
  • 举报
回复
1.三组程序,找出你认为的错误。
  (1)a.c long temp[255];
  b.c extern *temp;
  (2)a.c long temp[255];
  b.c extern temp[256];
  (3)a.c long temp[255];
  b.c extern temp[];
*temp和temp[255]不是一个类型,temp[255]是内存中的一块,在编译的时候要生成代码为他分配空间,temp应该是const的。*temp表示一个指针变量,编译器不会为他分配空间。
extern *temp; // 声明一个指针,注意,只是声明
extern temp[256]; //声明一个常量指针,指向一块长度为256的内存块
extern temp[]; // 声明一个常量指针,指向一块长度未知的内存块
对于指向内存块的指针,是在从编译器的角度避免指针越界和非法操作。
MagicCarmack 2005-06-07
  • 打赏
  • 举报
回复
这个VIA是做硬件的吧

怎么也搞C++这种题 呢
oyscal 2005-06-07
  • 打赏
  • 举报
回复
whatsouta(某疯子)的试验很有意思啊,我也去试试看
WingForce 2005-06-06
  • 打赏
  • 举报
回复
如果你有勇气拒绝做这几题,估计能被录取
不过,听说那个台湾公司不咋地
soyan 2005-06-06
  • 打赏
  • 举报
回复
保持沉默
ywfscu 2005-06-06
  • 打赏
  • 举报
回复
啥子题哦!典型的走火入魔。
jingyueid 2005-06-06
  • 打赏
  • 举报
回复

选1)为什么不对,不清楚。在汇编下,1)2)访问方式不同。

mostideal 2005-06-06
  • 打赏
  • 举报
回复
mark!!!
jayfantsy 2005-06-06
  • 打赏
  • 举报
回复
第一个选3.
第二个和第三个不清楚,感觉第三个不对劲,学习中
「已注销」 2005-06-06
  • 打赏
  • 举报
回复
printf(“0x%x”, (&0)[-1]); 请问打印了什么?
要请问考官了。。测试的确过不了。。。
呵呵。。答案:无输出,除了一大批错误!!
whatsouta 2005-06-06
  • 打赏
  • 举报
回复
3.printf(“0x%x”, (&0)[-1]); 请问打印了什么?

在BCB6下编译通不过,说明为:
[C++ Error] Unit1.c(11): E2027 Must take address of a memory location
这是否证明:不能对常量取地址运算?


进行以下试验

const char b = 'b'; //这里可以是任何类型的数据
int main(int argc, char* argv[])
{
printf("0x%x", (&b)[-1]);
getch();
return 0;
}
输出 0x0
如果变量定义在MAIN函数内,也不管是何类型数据,输出为 0x100。

强烈想知道详解。
加载更多回复(8)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧