有一道C语言的选择题,希望能帮忙给出详细解答,谢谢了
设有以下说明和定义语句,则下面表达式中值为3的是()structs{inti;structs*i2;};staticstructsa[3]={1,&a[1],2,&a[2...
设有以下说明和定义语句,则下面表达式中值为3的是()
struct s
{ inti;
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 展开
struct s
{ inti;
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 展开
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];
第5句相当于
static struct s a[3]={{1,&a[1]},{2,&a[2]},{3,&a[0]}};
然后看答案
A.ptr->i++
ptr指向a[1]然后指向属性i 此时i=2
运行完这句时候才执行i++
B.ptr++->I
结构体中没有I这个属性
C.*ptr->i
->的优先权大于*指针 所以相当于*(ptr->i)而i属性是int 不能用*指针去修饰
D.++ptr->i
->的优先权大于++所以相当于++(ptr->i)
而使用这句之前使用了i+=1
所以此时a[1]的i=3
所以正确答案是D
更多追问追答
追问
“D.++ptr->i
->的优先权大于++所以相当于++(ptr->i)
而使用这句之前使用了i+=1
所以此时a[1]的i=3”
在哪里使用了“i+=1”?
追答
++ptr->i
相当于++(ptr->i)
意思就是使用ptr指针指向的结构体中的属性i之前 使i自增1
i++是使用后自增1,++i是使用前自增1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询