struct abc{ int a; float b; char *c; } main() { static struct abc x = {23, 98.5, “wang”}; struct abc *px = &x; printf(“%d %.1f %s\n”, x.a, x.b, x.c); printf(“%d %.1f %s\n”, px->a, (*px).b, px->c); printf(“%c %s\n”, *px->c+2, &px->c[1]); }输出结果
时间: 2024-01-23 20:02:54 浏览: 63
C语言结构体(struct)常见使用方法(细节问题)
5星 · 资源好评率100%
程序存在一些语法错误,应该是:
```
#include <stdio.h>
struct abc {
int a;
float b;
char *c;
};
int main()
{
static struct abc x = {23, 98.5, "wang"};
struct abc *px = &x;
printf("%d %.1f %s\n", x.a, x.b, x.c);
printf("%d %.1f %s\n", px->a, (*px).b, px->c);
printf("%c %s\n", *(px->c+2), &px->c[1]);
return 0;
}
```
输出结果为:
```
23 98.5 wang
23 98.5 wang
n ang
```
解释:
首先定义了一个结构体类型 `abc`,包含三个成员变量 `a`、`b` 和 `c`,分别为整型、浮点型和字符指针类型。
在 `main` 函数中,定义了一个静态变量 `x`,类型为 `abc`,并使用结构体初始化器对其进行初始化。同时定义了一个指向 `x` 的结构体指针 `px`,并将 `x` 的地址赋值给 `px`。
接着使用 `printf` 函数分别输出 `x` 和 `px` 指向的结构体中的成员变量的值。在第一个输出语句中,直接使用 `.` 运算符访问结构体成员;在第二个输出语句中,使用 `->` 运算符访问结构体指针所指向的结构体中的成员变量。
最后一个输出语句中,使用了指针运算符 `->` 和数组下标运算符 `[]` 对字符指针进行了操作。先使用 `->` 运算符将指针 `px->c` 指向的字符串的第三个字符 'n' 取出来,然后使用 `+2` 将指针后移两位,指向字符串的第五个字符 'g',最后使用 `*` 运算符取出该字符并输出。使用 `[]` 运算符取出字符串的第二个字符 'a' 的地址,并使用 `&` 运算符取该地址的地址,即字符串的第二个字符 'a' 的地址的地址,最终输出字符串 "ang"。
阅读全文