#include <stdio.h> struct st { int x; int *y;} *p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]}; void main() { p=aa; printf("%d\n",++(p->x)); }这题为什么选c
时间: 2023-12-06 08:43:11 浏览: 37
这道题目选C语言的原因是因为它涉及了C语言的结构体和指针知识。下面是这段代码的解析:
1. 定义了一个结构体st,包含两个成员变量,一个是整型变量x,另一个是整型指针y。
2. 定义了一个数组dt,里面存放了4个整型数值。
3. 定义了一个结构体数组aa,其中每个元素都包含两个成员变量,一个是整型变量x,初始化为50,另一个是整型指针y,初始化为数组dt的第一个元素的地址。
4. 定义了一个指向结构体st类型的指针变量p,初始化为aa数组的首地址。
5. 在main函数中,先将p指向aa数组的首地址。
6. 接着,执行++(p->x)操作,表示将p所指向的结构体变量中的x成员加1,并返回加1后的值。
7. 最后,使用printf函数输出p所指向的结构体变量中的x成员的值,输出结果为51。
因此,该题的正确答案为C。
相关问题
#include <stdio. h> struct ord{ int x,y; }dt[3]={0,1,2,3,4,5}; int main( ){ struct ord *p=&dt[1]; printf("%d\n", ++p ->y); return 0;
这段代码的输出结果是4。首先定义了一个结构体ord,包含两个成员变量x和y。然后定义了一个数组dt,数组元素为三个ord类型的结构体,分别初始化为(0,1)、(2,3)、(4,5)。接着定义了一个指向ord类型结构体的指针p,指向数组中第二个元素dt[1]。最后输出++p->y的值,等价于++(p->y),即将p所指向的结构体的y成员变量加1,输出结果为4。
以下程序运行后的输出结果是 。 #include <stdio.h> struct st { int x; int *y;} *p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]}; void main() { p=aa; printf("%d\n",++(p->x)); } A 10 B 11 C 51 D 60
答案是 B。
程序中定义了一个结构体 st,包含两个成员变量,一个整型变量 x 和一个整型指针 y。
定义了一个数组 dt,并初始化为 {10,20,30,40}。
定义了一个结构体数组 aa,包含 4 个元素,每个元素分别为 {50, &dt[0]}、{60, &dt[0]}、{60, &dt[0]}、{60, &dt[0]}。
在主函数中,将 aa 数组的首地址赋值给指针 p。然后对 p 所指向的结构体中的 x 值进行自增操作,并输出结果。
因为 p 指向了 aa 数组的首地址,所以 ++(p->x) 实际上是对 aa[0].x 进行自增操作,结果为 11。因此程序输出 11。