moto笔试~

luoknd 2005-10-15 03:25:25
1.
byte *pbt;
pbt =1234;
*(pbt++) =1 ;
long *plong = ((long*)pbt)+1;
plong=?

2.
下面语句定义了指针p指向一个数组?
a int*p[3];
b (int*) p[5];
c int(*p)[4] ;
d int*p[];



...全文
592 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
AntonlioX 2005-10-16
  • 打赏
  • 举报
回复
2 C
Camelh 2005-10-16
  • 打赏
  • 举报
回复
to: liufeifei()
指针加1是指加上其类型的1,因为byte类型只占一个byte,而long型占4个字节,所以后面是加long型的4个字节
yhbttfile 2005-10-16
  • 打赏
  • 举报
回复
第一题“JohnTitor(努力学习)”第一个正解。
第二题“llf_hust() ”第一个正解。

第一题测试C语言的语言功底还是有一定帮助的。第二题测试C语言的变量申明语义还是有一定意义的。
我觉得这两道题还是比较有水平的。

第一题很好理解,我来说说第二题:
a int*p[3];
变量声明的时候后缀比前缀具有更强的约束力,所以p是一个int指针的数组。不应该选择。
b (int*) p[5];
这里的括号是一个强制类型转换,而不是变量声明。语义是把“p[5]”所指的内容强制转换成int指针。不应该选择。
c int(*p)[4] ;
变量声明的时候后缀比前缀具有更强的约束力,但括号改变了约束力的顺序。所以,它是一个int[4]数组类型的指针。
d int*p[];
解释跟“a”差不多。但需要注意的是,这个申明需要后面给出初始化列表。就如:char p[] = "abcd"。作为一个例子:
int *p = new int;
int*pv[] = {p, p};


两道题都是考C语言的基本功夫。
liufeifei 2005-10-16
  • 打赏
  • 举报
回复
long型的1和byte的1有什么区别?
为什么最后加4了?
指点小弟啊?谢谢
alphagm 2005-10-16
  • 打赏
  • 举报
回复
强人啊!学习!
antijpn 2005-10-16
  • 打赏
  • 举报
回复
又是乱七八糟的没水平的面试题,真不知道这种面试能面出什么人才来……

丢到非技术去
codearts 2005-10-16
  • 打赏
  • 举报
回复
byte *pbt;
pbt =1234;
*(pbt++) =1 ;
不明白,内存都没分配,就能赋值? windows下1234这个地址应该是不能进入的吧?
sunmemon 2005-10-16
  • 打赏
  • 举报
回复
int(*p)[4]中p是指向一维数组的指针变量;int*p[3]是定义的一维指针数组;int*p[]函数穿行参时用吧;(int*) p[5]没见过,*应该是右结合吧。。。
lujun-cc 2005-10-15
  • 打赏
  • 举报
回复
楼上的都很强!

只是对第二题的题意觉得不很明确,“p指向一个数组”,那么当P被定义成一个数组时,那么p是否也算作指向一个数组呢?
zl0126 2005-10-15
  • 打赏
  • 举报
回复
学习
Camelh 2005-10-15
  • 打赏
  • 举报
回复
楼上的正解,pbt开始是byte型,所以在*(pbt++) =1 ;是对pbt所指向的空间赋值为1,然后将pbt加byte型1,在long *plong = ((long*)pbt)+1;则是将pbt加上long型的1,所以应该是1234+1+4
yeehya 2005-10-15
  • 打赏
  • 举报
回复
luoknd(飞天) ( ) 信誉:99
楼上的,第一题为什么???为什么sizeof(byte)
pbt++
这里的pht = (byte*)pht + 1;
和long *plong = ((long*)pbt)+1;一样
所以正确的是1234+sizeof(byte)+sizeof(long)
csucdl 2005-10-15
  • 打赏
  • 举报
回复
typedef char byte
province_ 2005-10-15
  • 打赏
  • 举报
回复
1、1235+4
2、C
luoknd 2005-10-15
  • 打赏
  • 举报
回复
楼上的,第一题为什么???为什么sizeof(byte)
csucdl 2005-10-15
  • 打赏
  • 举报
回复
第一题:1234 + sizeof(byte) + sizeof(long) = 1239
第二题:c
JohnTitor 2005-10-15
  • 打赏
  • 举报
回复
plong = 1239
byte相当于unsigned char
luoknd 2005-10-15
  • 打赏
  • 举报
回复
再问一下:
byte 需要什么头文件啊?
编译通不过。。。
llf_hust 2005-10-15
  • 打赏
  • 举报
回复
2
c

15,446

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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