C语言,宏定义和结构体指针问题,求高手解答啊,谢谢了!!

#definedpsstructS*typedefstructS*tps;在上面的基础上求出下面两个表达式的等价表达式:(1)dpsp1,p2;(2)tpsp3,p4;... #define dps struct S*
typedef struct S* tps;
在上面的基础上求出下面两个表达式的等价表达式:
(1)dps p1,p2;
(2)tps p3,p4;
展开
 我来答
帐号已注销
2012-11-20 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1266万
展开全部
宏定义完全就是字符串替换,所以:
(1)等价于 struct S *p1, p2;
这里p1是个指针,而p2是个普通变量
(2)等价于 struct S *p3, *p4;
p3和p4都是指针。
更多追问追答
追问
第一组为什么p1是指针,而p2是普通变量
而第二组p3、p4都是指针啊,能详细解释下吗?
先谢谢了!!
追答
因为#define完全就是简单的字符串替换。
dps p1,p2;
因为dps是个宏,宏就是字符串替换,你把dps替换成struct S*,就变成了:
struct S* p1, p2;所以p1是指针,p2是对象。

而typedef是定义了一种新类型,不是字符串替换。
fly心随梦
2012-11-23
知道答主
回答量:16
采纳率:0%
帮助的人:14.1万
展开全部
typedef struct S* tps;
这句话定义了用 tps 代表 struct S* 这个指针类型,就像 typedef int NUM;
以后NUM就代表 int,比如 NUM a,b; 相当于 int a,b; a,b,就是 NUM那个类型的变量;
所以p3,p4 为 struct S* 类型的指针变量;而宏定义是#define dps struct S* 是在你写完代码编译时编译器自动将代码中的dps 替换为你定义的 struct S*这几个字符,所以当你执行时dps p1,p2;这句话就相当与 struct S*p1,p2; p1为指针类型,p2 为结构体变量。相当于int *p1,p2;
p1为指针p2为整形变量
希望可以帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式