一个面试题,要写出程序运行的结果,请大家一起讨论下

zhouhong0801 2007-09-19 07:05:51
#include <stdio.h>
#define ADD(p) {p++;(*p)++;}
#define Add(int *p) {p++;(*p)++;}

int a[]={0,1,2};
int main()
{
int *p=a;
ADD(p)
ADD(p)
printf("%d,%d,%d\n",a[0],a[1],a[2]);
p=a;
Add(p);
Add(p);
printf("%d,%d,%d\n",a[0],a[1],a[2]);
}
...全文
430 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liusujian02 2008-08-05
  • 打赏
  • 举报
回复
估计这个题目的主要用意是
考查函数和宏调用的差别;

宏是直接替换的,但是函数的调用是存在入栈和出栈操作的.
zhouhong0801 2007-09-21
  • 打赏
  • 举报
回复
题目是威盛的,我也觉得很烂……
yang511yang 2007-09-20
  • 打赏
  • 举报
回复
#define Add(int *p) {p++;(*p)++;} 中参数格式有问题产生错误
main()函数最后缺少return 语句产生警告
考试原意的结果应该是:
0 2 3
0 3 4
题目也烂了吧!哪家公司?
我看你有戏 2007-09-20
  • 打赏
  • 举报
回复
--------------------Configuration: 8 - Win32 Debug--------------------
Compiling...
8.cpp
c:\documents and settings\administrator\桌面\csdn\8.cpp(3) : error C2010: '*' : unexpected in macro formal parameter list
c:\documents and settings\administrator\桌面\csdn\8.cpp(3) : error C2010: 'p' : unexpected in macro formal parameter list
c:\documents and settings\administrator\桌面\csdn\8.cpp(16) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.

8.exe - 2 error(s), 1 warning(s)
arong1234 2007-09-20
  • 打赏
  • 举报
回复
很显然:宏参数不能带类型,因此#define Add(int *)是非法的
bevatron 2007-09-20
  • 打赏
  • 举报
回复
搂主记错提了? #define Add(int *p) {p++;(*p)++;} 是 void Add(int *p) {p++;(*p)++;} ?
reedleaf 2007-09-19
  • 打赏
  • 举报
回复
error C2010: '*' : unexpected in macro formal parameter list
独孤过儿 2007-09-19
  • 打赏
  • 举报
回复
我用MinGW编译不过,错误如下:

--------------------Configuration: fetag - Debug--------------------
Compiling source file(s)...
main.c
..\..\..\cygwin\home\fetag\main.c:3:17: "*" may not appear in macro parameter list
..\..\..\cygwin\home\fetag\main.c: In function `int main()':
..\..\..\cygwin\home\fetag\main.c:13: error: `Add' undeclared (first use this
function)
..\..\..\cygwin\home\fetag\main.c:13: error: (Each undeclared identifier is
reported only once for each function it appears in.)

field.exe - 3 error(s), 0 warning(s)

不过看了下代码,只是一个指针自加 和 指针 指向的内容自加的问题,还不算难啊

而且就为了这个自加,也犯不着定义了一个不是所有编译器都能支持的宏啊
huhaihong 2007-09-19
  • 打赏
  • 举报
回复
0,2,3
0,4,3
msad14 2007-09-19
  • 打赏
  • 举报
回复
程序有毛病,编译出错!!!

69,371

社区成员

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

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