菜鸟教程广州蚂蚁运输搬家公司


当前位置:首页 - 新闻资讯
(责任编辑:admin)

结构体中成员变量分配的空间是根据成员变量中占用空间最大的来作为分配单位,同样成员变量的存储空间也是不能 跨分配单位的,如果当前的空间不够 ,则会存储到下一个分配单位中。

#include <stdio.h> typedef struct { unsigned char a; unsigned int b; unsigned char c; } debug_size1_t; typedef struct { unsigned char a; unsigned char b; unsigned int c; } debug_size2_t; int main(void) { printf("debug_size1_t size=%lu,debug_size2_t size=%lu\r\n", sizeof(debug_size1_t), sizeof(debug_size2_t)); return 0; }

编译执行输出结果:

debug_size1_t size=12,debug_size2_t size=8

结构体占用存储空间,以32位机为例

1.debug_size1_t 存储空间分布为a(1byte)+空闲(3byte)+b(4byte)+c(1byte)+空闲(3byte)=12(byte)。

1.debug_size2_t 存储空间分布为a(1byte)+b(1byte)+空闲(2byte)+c(4byte)=8(byte)。

tianqixin

tianqixin

429***967@qq.com

2年前 (2017-03-27)

#5

小羽

106***1689@qq.com

0

结构体数组:

#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXTITL 41 #define MAXAUTL 31 #define MAVXBKS 100 char * s_gets(char * st, int n); struct book {     char title[MAXTITL];     char author[MAXAUTL];     float value; }; int main() {     struct book library[MAVXBKS];    //book类型的结构体数组     int i;     int index;     printf("请问你要录入多少本书的信息\n");     do     {         scanf("%d", &index);     } while (index > MAVXBKS);     getchar();     for (i = 0; i < index; i++)         {         printf("请输入第%d本书的名称:\n",i+1);         s_gets(library[i].title, MAXTITL);         printf("输入其作者的名字:\n");         s_gets(library[i].author, MAXAUTL);         printf("请输入书本的价格:\n");         scanf("%f", &library[i].value);         getchar();     }     for (i = 0; i < index; i++)     {             printf("%d\t%s 是 %s 写的 定价为%f元\n", i,library[i].title, library[i].author, library[i].value);     }     system("pause");     return 0; } char * s_gets(char * st, int n) {     char * ret_val;     char * find;     ret_val = fgets(st, n, stdin);     if (ret_val)     {         find = strchr(st, '\n');    //查找换行符         if (find)    // 查找地址不为空             *find = '\0';    //在此处放入一个空字符         else             while (getchar() != '\n')         continue;    //解决剩余字符     }     return ret_val; }

小羽

106***1689@qq.com

2年前 (2018-01-31)

#4

leesc

318***893@qq.com

0

可以在声明结构体时初始化结构体变量:

#include <stdio.h> int main(void) {     struct Student {         char name[50];         int gender;         int age;     } student2 = {"张三",0,30};     struct Student student1;     printf("name:\n");     scanf("%s",student1.name);     printf("gender:\n");     scanf("%d",&student1.gender);     printf("age:\n");     scanf("%d",&student1.age);     printf("student1 >>name = %s, gender = %d, age = %d\n", student1.name, student1.gender, student1.age);     printf("student2 >>name = %s, gender = %d, age = %d\n", student2.name, student2.gender, student2.age); }

leesc

318***893@qq.com

12个月前 (08-26)

#3

js

824***808@qq.com

  参考地址

0

结构体数组

  • 共3页:
  • 上一页
  • 1
  • 2
  • 3
  • 下一页