一道简单的C语言题

2.设有以下说明和定义语句,则下面表达式中值为3的是。
struct s
{ int i;
struct s *i2;
};
static struct s a[3]={1, &a[1],2,&a[2],3,&a[0]};
static struct s *ptr;
ptr=&a[1];
A)ptr->i++ B)ptr++->I C)*ptr->i D)++ptr->i
答案选什么?为什么?

答案为D
a[3]数组之中元素值(每一个数组元素都是结构体)
a[0] ={1, &a[1]}
a[1] ={2,&a[2]}
a[2] ={3,&a[0]}

ptr =&a[1];
选项A ptr->i++ = 1+1 =2;
选项B
ptr++->i =(ptr->i)++
此时ptr->i =2,由于是后缀,所以在此式子之后才变化
B、D就是++i,i++区别了。
选项C为
*ptr->i =*(ptr->i) //错误
选项D
++ptr->i = ++(ptr->i)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-14
其实这就是个循环链表,顺便理解自增操作就行了。
可知a[2].i 的值为3,故选D。
第2个回答  2019-06-25
argc
是传参个数,包括程序本身,就是exam
123的个数,2;
argv
是第一元素的个数,以上例来讲,就是123的个数,3;

答案应该是
6;
相似回答