一道基础面试题
欢迎到编程群 34239472
我们期待你的加入
但为了营造一个真正的学习讨论氛围,大家都有一定的基础
请以下面问题的答案进行验证
用变量a进行如下定义
定义一个指向整个二维数组的指针,此数组为10x10,其每个元素是一个指向函数的指针,此函数的返回值为指向字符的指针,参数有两个分别为int * 和 char *;
我们期待你的加入
问题点数:100、回复次数:55Top
1 楼Aaron_Jerry(音乐诗人)回复于 2006-12-31 22:01:16 得分 0
typedef char* (*pfun[10][10])(int* ,char*);Top
2 楼kuwe34()回复于 2006-12-31 22:06:32 得分 0
错了楼上 知道的请不要发答案上来
欢迎到编程群 34239472
我们期待你的加入
但为了营造一个真正的学习讨论氛围,大家都有一定的基础
请以下面问题的答案进行验证Top
3 楼mochen5460(mochen)回复于 2006-12-31 22:07:42 得分 0
typedef char* (*pf)(int *,char *);
pf a[10][10];
Top
4 楼mochen5460(mochen)回复于 2006-12-31 22:08:51 得分 0
呵呵,没看到1,2楼,直接发上来了,不过不知道对不对Top
5 楼kuwe34()回复于 2006-12-31 22:17:58 得分 0
错了楼上 知道的请不要发答案上来
欢迎到编程群 34239472
我们期待你的加入
但为了营造一个真正的学习讨论氛围,大家都有一定的基础Top
6 楼rongcanf(沉默是猪。)回复于 2007-01-01 18:41:13 得分 0
^_^,有创意~Top
7 楼caocheng8230(学C++而不知疲倦)回复于 2007-01-01 20:01:39 得分 0
定义一个指向整个二维数组的指针,此数组为10x10,其每个元素是一个指向函数的指针,此函数的返回值为指向字符的指针,参数有两个分别为int * 和 char *;
//////
//使用typedef 很easy
typedef char* (*function)(int*,char*);
function param[10][10];Top
8 楼weixing979(★★★闪电侠★★★)回复于 2007-01-01 23:34:10 得分 0
还是typedef好一些Top
9 楼kuwe34()回复于 2007-01-01 23:50:34 得分 0
还是错了:caocheng8230(学C++而不知疲倦)
要求是 定义一个指向整个二维数组的指针Top
10 楼a_humble_programmer(lovecreatesbeauty.googlepages.com)回复于 2007-01-02 00:44:25 得分 0
>typedef char* (*pfun[10][10])(int* ,char*);
it's almost close to:
char (*afp [10][10])(int *, char *);
>错了楼上 知道的请不要发答案上来
why not?
>欢迎到编程群 34239472
什么群,猪牛群,马羊群还是鸟群?Top
11 楼kuwe34()回复于 2007-01-02 00:56:13 得分 0
是基础群 a_humble_programmer()说的对大部分人都出问题在定义一个指向整个二维数组的指针Top
12 楼hxliu_leo()回复于 2007-01-02 11:20:31 得分 0
int *(char*a(int*,char*))[10][10];Top
13 楼yzx1983(捕风捉影)回复于 2007-01-02 11:31:48 得分 0
typedef char* (*pf)(int *,char *);
pf (* a)[10];Top
14 楼DragonBill(用户中文昵称------静观其变,以静制动)回复于 2007-01-02 13:01:01 得分 20
typedef char* (*PF)(int *, char *);
PF (*a) [10][10];
我不用QQ的,有没有MSN?Top
15 楼davidxbc()回复于 2007-01-02 13:32:36 得分 0
#define N 10
typedef char* (*pf)(int *, char *) pfCIC;
pfCIC (*pa)[N][N]
pa就是你想要的Top
16 楼davidxbc()回复于 2007-01-02 13:33:13 得分 0
#define N 10
typedef char* (*pf)(int *, char *) pfCIC;
pfCIC (*pa)[N][N]
pa就是你想要的Top
17 楼davidxbc()回复于 2007-01-02 13:35:35 得分 0
#define N 10
typedef char* (*pf)(int *, char *) pfCIC;
pfCIC (*pa)[N][N]
pa就是你想要的Top
18 楼gujianxin(木头象)回复于 2007-01-02 13:42:42 得分 0
char* (* a[10][10])( int * , char *)Top
19 楼davidxbc()回复于 2007-01-02 13:43:26 得分 20
#define N 10
typedef char* (*pfCIC)(int *, char *)
pfCIC (*pa)[N][N]
pa就是你要的
qq:113007620Top
20 楼kuwe34()回复于 2007-01-02 16:03:45 得分 0
用啦Top
21 楼kuwe34()回复于 2007-01-02 16:18:37 得分 0
当前统计人气290
要求验证的有35人
答对的有10人
欢迎到编程群 34239472Top
22 楼robert126(学习不忘座板凳)回复于 2007-01-02 20:17:53 得分 0
typedef char* (*PF)(int *, char *);
PF (*a) [10][10];Top
23 楼dx30611(想要clean code)回复于 2007-01-02 20:46:12 得分 0
typedef char* ((*funtion)[10][10])(int* ,char*);Top
24 楼kuwe34()回复于 2007-01-02 23:14:54 得分 0
好的答对的人多了
答案是
char* ( *( (*a)[10][10] ) )(int * , char *);
简明的是
typedef char* (*pfun)(int * , char *);
pfun (*a)[10][10];
看来要换题目了
请看下面程序片段(有错吗?)
FILE * fp;
struct record rec;
....
while (fread( (char *)&rec, sizeof(rec), 1, fp) == 1)
{
/* 对rec执行操作*/
(A)
if (/*rec 必须被重新写入*/)
{
(B)
fseek(fp,-(long)sizeof(rec),1);
(C)
fwrite( (char*)&rec, sizeof(rec), 1, fp);
(D)
}
}
认为有错的 请在A B C D 其中一处加上改正代码 用 A(位置) 添加的语句 验证
认为没错的 请用 NO验证
编程群 34239472Top
25 楼yzx1983(捕风捉影)回复于 2007-01-03 12:55:19 得分 0
fseek(fp,-(long)sizeof(rec),1);
写成
fseek(fp,-(long)sizeof(rec),SEEK_CUR);
比较好吧Top
26 楼kuwe34()回复于 2007-01-03 13:40:16 得分 0
是的 但是问题不在这里Top
27 楼kuwe34()回复于 2007-01-03 13:48:28 得分 0
这题应该相对容易点吧Top
28 楼kuwe34()回复于 2007-01-03 13:50:59 得分 0
人 气: 469
Top
29 楼ReverseEngineering(★给我一杯壮阳水☆换我一夜不下垂★男人阳萎不是罪☆)回复于 2007-01-03 14:52:12 得分 0
学习,好刁专呀!Top
30 楼yqever()回复于 2007-01-03 16:07:43 得分 0
什么群,还要发答案才能加入?
先想想别人是否愿意加你的群吧.Top
31 楼kuwe34()回复于 2007-01-03 16:26:08 得分 0
为了营造一个真正的学习讨论氛围,大家都有一定的基础Top
32 楼kuwe34()回复于 2007-01-03 17:24:37 得分 0
其实语句是没错的 就是少了一句关键的 很容易忽略的Top
33 楼Arthur_()回复于 2007-01-03 17:50:18 得分 0
dTop
34 楼Arthur_()回复于 2007-01-03 17:50:59 得分 0
帮你顶Top
35 楼xmxoxo(xmxoxo)回复于 2007-01-03 17:55:43 得分 0
群嘛,人多,水平高都没啥子用
说一句话,半天没人应,人再多,水平再高又有啥用
关键是有几个热心的人......Top
36 楼kuwe34()回复于 2007-01-03 18:30:44 得分 0
以前有个群 老是有人出来说帮忙写课程设计的东西 烦
所以才有问题验证的这主意 起码不会是一些为了作作业的人进来了Top
37 楼liangxing110()回复于 2007-01-03 22:40:52 得分 0
heheTop
38 楼kuwe34()回复于 2007-01-03 22:48:15 得分 0
难道每人看出漏了哪句吗?
大家发表一下咯Top
39 楼Arthur_()回复于 2007-01-04 13:02:57 得分 10
choose D
读写交叉问题Top
40 楼Arthur_()回复于 2007-01-04 13:03:41 得分 0
顺便顶, 公司没qq,郁闷期待webqqTop
41 楼mlwu3(wml)回复于 2007-01-04 13:30:29 得分 0
markTop
42 楼kuwe34()回复于 2007-01-04 15:09:05 得分 0
Arthur_(事业迷忙期) 是的
是读写交叉问题Top
43 楼yzx1983(捕风捉影)回复于 2007-01-04 15:29:03 得分 30
Reads and writes may be intermixed on read/write streams in any order.
Note that ANSI C requires that a file positioning function intervene
between output and input, unless an input operation encounters end-of-
file. (If this condition is not met, then a read is allowed to return
the result of writes other than the most recent.) Therefore it is good
practice (and indeed sometimes necessary under Linux) to put an fseek
or fgetpos operation between write and read operations on such a
stream. This operation may be an apparent no-op (as in fseek(..., 0L,
SEEK_CUR) called for its synchronizing side effect.Top
44 楼yzx1983(捕风捉影)回复于 2007-01-04 15:29:13 得分 0
好神奇……Top
45 楼ccczqh(jingoo)回复于 2007-01-04 16:52:50 得分 20
struct record
{
int a;
int b;
};
int main(int argc, char* argv[])
{
FILE * fp;
struct record rec;
int i=0,ret=0;
#if 1
fp=fopen(".\\t.txt","w");
for(i=0;i<1;i++)
{
rec.a='a'+i;
rec.b=0;
fwrite( (char*)&rec, sizeof(rec), 1, fp);
}
fclose(fp);
i=0;
#endif
fp=fopen(".\\t.txt","r+");
while (fread( (char *)&rec, sizeof(rec), 1, fp) == 1)
{
/* 对rec执行操作*/
//(A)
if (1/*rec 必须被重新写入*/)
{
//(B)
//fseek(fp,-sizeof(rec),1);
ret=fseek(fp,-sizeof(rec),1);
printf("cur:%d\n",ftell(fp));
//(C)
fwrite( (char*)&rec, sizeof(rec), 1, fp);
fflush(fp);
printf("cur2:%d\n",ftell(fp));
//(D)
if(i++>2)
{
fseek(fp,0,SEEK_END);
printf("cur3:%d\n",ftell(fp));
break;
}
}
}
fclose(fp);
printf("Hello World!\n");
return 0;
}
//刚才写的测试代码!如果不添加fflush(fp);就错误!
Top
46 楼kuwe34()回复于 2007-01-04 17:13:04 得分 0
正解是
yzx1983(捕风捉影) ( ) 信誉:100
大家看看
Top
47 楼ccczqh(jingoo)回复于 2007-01-04 17:31:58 得分 0
kuwe34() 再来一个把!呵呵Top
48 楼qualcommbrew()回复于 2007-01-04 17:34:21 得分 0
没必要 我想真正的高手也不会去加这样的群。
虽然我也不是什么高手,这样的题也太小儿颗了吧。Top
49 楼kuwe34()回复于 2007-01-04 17:47:35 得分 0
其实用
fflush也是可以的Top
50 楼windspeaker()()回复于 2007-01-04 20:26:25 得分 0
其实大家都上当了,哈哈Top
51 楼kuwe34()回复于 2007-01-04 20:57:26 得分 0
是基础群Top
52 楼kuwe34()回复于 2007-01-04 21:03:16 得分 0
我们十分希望真正的高手加入
注明:小儿科
即可Top
53 楼kuwe34()回复于 2007-01-04 21:06:09 得分 0
回复人:qualcommbrew() ( ) 信誉:100 2007-01-04 17:34:21 得分:0
? 没必要 我想真正的高手也不会去加这样的群。
虽然我也不是什么高手,这样的题也太小儿颗了吧。Top
54 楼studyall123(不想当将军的士兵不是一名好士兵)回复于 2007-01-04 21:09:32 得分 0
jfTop
55 楼wapdiannet(孤独剑)回复于 2007-01-05 13:01:46 得分 0
while (fread( (char *)&rec, sizeof(rec), 1, fp) == 1)
{
/* 对rec执行操作*/
(A)
if (/*rec 必须被重新写入*/)
{
(B)
fseek(fp,-(long)sizeof(rec),1);
(C)
fwrite( (char*)&rec, sizeof(rec), 1, fp);
(D)
//fseek(fp,(long)sizeof(rec),1);
}
}
Top




