问一个c语言题目

[复制链接]
查看11 | 回复4 | 2010-6-30 10:16:27 | 显示全部楼层 |阅读模式
若有以下的定义和语句,则表达式*(++p)->b用%d输出的值是_________
struct wc{
int a, *b;
}*p;
int x0[]={11, 12}, x1[]={31, 32};
static struct wc x[2]={100, x0, 300, x1};
p=x;
非常感谢!

回复

使用道具 举报

千问 | 2010-6-30 10:16:27 | 显示全部楼层
p指向x,++p指向x的第二个元素x[1],x[1]的b指向的x1,里面的值是31
回复

使用道具 举报

千问 | 2010-6-30 10:16:27 | 显示全部楼层
结果为31。
回复

使用道具 举报

千问 | 2010-6-30 10:16:27 | 显示全部楼层
答案应该是31。p是一个指针,指向x数组,也就是指向x数组的第一个元素。++p是先自加,那么p指向的就是数组的下一个元素即第二个元素。第二个元素就是a=300,b=x1。按照C语言的运算符优先级,那么(++p)->b先被运算,这个整体等同于x1。再对这个整体取值,那么*(++p)->b就等同于*x1,而x1指向数组的第一个元素,对它取值,就是获取
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行