如何解这道题,请详细点!

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:45:23
struct test
{ int a;
int *b;
}num[4],*sp;
void main()
{
int n=1,i;
for(i=0;i<4;i++)
{
num[i].a=n;
num[i].b=&num[i].a;
n=n+2;
}
sp=num;
sp++;
printf("%d\n",(sp++)->a);
printf("%d\n",*(sp->b));
}
(1)程序中第一条printf的运行结果为( )。
(A)1 (B) 3 (C)5 (D)7
(2)程序中第二条printf的运行结果为( )。
(A)1 (B) 3 (C)5 (D)7
讲哈运行过程,初学者!!!

答案是B,C

=======================
如果初学的话,还是从基本的看起走哦,这里有指针还有结构体,所以研究也没多大意思......我把关键的注释写出来了
=======================

每个结构体num中,b是指向这个结构体中元素a的指针。

struct test
{ int a;
int *b;
}num[4],*sp;
void main()
{
int n=1,i;
for(i=0;i<4;i++)
{
num[i].a=n; //a赋值
num[i].b=&num[i].a; //b指向a
n=n+2;
}
sp=num; //SP指向num[0]
sp++; //sp指向num[1]
printf("%d\n",(sp++)->a);//输出num[1].a 并使sp指向num[2]
printf("%d\n",*(sp->b));//输出num[3].b所指向的内容即num[3].a
}

ab

(1)B
(2) C

在程序首部加哥包含文件
#include<stdio.h>