抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

相关定义

结构体是一种复合类型

  • 复合性:

    • 结构体单元可以存储不同类型的数据
  • 是一种自定义类型

  • 使用

    定义类型 → 通过类型分配结构体单元 → 使用单元

声明结构体类型

struct 结构体名 {
	数据类型 成员1;
	数据类型 成员2;
	...
};

说明

  • 该定义为类型定义

  • 类型名struct 结构体名

    • struct stu {
          int x;
          double y;
            char z;
      };
      
        
      - 占用空间大小(数据对齐原则)
      
      ## 通过类型声明变量
      
      - `struct 结构体名 变量`
      
      例:
      
      ```c
      struct Stu s1, s2;

通过结构体变量引用分量成员

  • 结构体变量名.成员名

  • 成员运算符

    • 运算符:.
    • 优先级:同[]->

例:

s1.x = 3;
s1.y = 5.7;
s1.z = 'A';

例2:

  • 将结构体变量s1的存到s2中
s2.x = s1.x;
s2.y = s1.y;
s2.z = s1.z;
//或采用下方语句
//s2 = s1;

两个同类型的结构体变量之间可以直接赋值

声明结构体指针变量,指向结构体单元

  • struct 结构体名* 指针变量

例:

struct Stu* p;
  • 使指针变量有指向
    • 指针变量 = &结构体变量

例:

p = &s1;
  • 通过指针引用结构体成员
    • 指针变量->成员名
    • 指针变量指向的某个结构体单元内的成员

例:

struct Stu s1;
struct Stu* p;
p = &s1;
p->x = 3;
//(*&s1).x = 3;
p->y = 5.7;
p->z = 'A';

结构体数组的定义

  • struct 结构体名 数组名[个数]

例:

struct Stu s[10];

例2:

#include <stdio.h>
#include <string.h>
struct Stu {
	int sno;
	char name[20];
	double per;
};
void SumScore(struct Stu s[], double* pm)
{
    for (int i = 0; i < 5; i++) {
		*pm += s[i].per;
    }
}
struct Stu* fmax (struct Stu s[])
{
    struct Stu *p, *pMax;
    int Max, x;
    pm = s;
    for (p = s + 1; p < s + 5; p++) {
		x = p->per;
    }
}
int main(void)
{
	struct Stu a[5];
    char n[20];
    double sum;
    struct Stu* pMax;
	for (int i = 0; i < 5; i++) {
		a[i]->sno = i + 1;
        gets(n);
        strcpy(a[i].name, n);
        scanf("%lf", &a[i].per);
	}
    SumScore(a, &sum);
    printf("%lf", sum / 5);
}

评论