以下程序的运行结果是: struct stru {int x; char c; }; main() { struct stru a={10, ' x' }, *p=&a; func (p); printf ( “%d,%c” , a.x, a.c);} func (struct stru *b){b->x=20; b->c='y';}
时间: 2024-01-16 16:03:25 浏览: 222
运行结果是:
```
20,y
```
程序中定义了一个结构体`stru`,包含一个`int`类型的成员`x`和一个`char`类型的成员`c`。在`main`函数中,定义了一个`stru`类型的结构体变量`a`,初始化为`{10, ' x' }`,同时定义了一个指向结构体的指针`p`,并将其指向`a`。然后调用函数`func`,将指针`p`作为参数传递给函数。在`func`函数中,将指针所指向的结构体中的`x`成员赋值为`20`,`c`成员赋值为`'y'`。
最后在`main`函数中,输出`a.x`和`a.c`的值,由于在`func`函数中修改了`a`的成员,因此输出的结果为`20,y`。
相关问题
若有如下结构体说明: struct STRU { int a,b;char c;double d; struct STRU *p1; }; 请填空,以完成对t数组的定义,t数组的元素为该结构体类型。 t[20];
可以这样定义t数组:
```
struct STRU t[20];
```
这样就定义了一个名为t、包含20个元素的数组,每个元素都是STRU类型的结构体。
以下程序段用于构成一个简单的单向链表,请填空。 struct STRU { int x,y; float rate; p; }a,b; a.x=0;a.y=0;a.rate=0;a.p=&b; b.x=0;b.y=0;b.rate=0;b.p=NULL;
完整代码如下:
```
#include <stdio.h>
struct STRU {
int x, y;
float rate;
struct STRU *p;
};
int main() {
struct STRU a, b;
a.x = 0;
a.y = 0;
a.rate = 0;
a.p = &b;
b.x = 0;
b.y = 0;
b.rate = 0;
b.p = NULL;
printf("a: x=%d, y=%d, rate=%f, p=%p\n", a.x, a.y, a.rate, a.p);
printf("b: x=%d, y=%d, rate=%f, p=%p\n", b.x, b.y, b.rate, b.p);
return 0;
}
```
其中,结构体 `STRU` 包含三个成员变量:`x`、`y`、`rate`,以及一个指向另一个 `STRU` 结构体的指针 `p`,用于构成单向链表。在 `main` 函数中,先定义了两个 `STRU` 类型的变量 `a` 和 `b`。然后,对变量 `a` 进行初始化,其中 `a.x`、`a.y`、`a.rate` 分别赋值为 `0`,`a.p` 指向变量 `b`。变量 `b` 同样进行了初始化,其中 `b.x`、`b.y`、`b.rate` 分别赋值为 `0`,`b.p` 赋值为 `NULL`。最后,打印出变量 `a` 和 `b` 的成员变量的值。
阅读全文