C语言结构体共用体0815

    xiaoxiao2025-08-30  42

    代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。 结构体:结构体是一种构造数据类型 结构体里面不能直接对数据直接赋值,赋值的是地址。 struct [结构体] //struct是关键字 { 类型标识符 成员名; ………. char names[100]; //姓名 char sex[10]; //性别 chhar mz[10]; //名族 char bd[100] ://出生年月日 } void main (){ struct macard card1; strcpy(card1.name ,”三支熊”); //赋值的方式1 sprinntf(card1.name ,”三支熊”); //赋值的方式2 struct MyStruct card1 = {“姓名:赵子龙”,9,”职业:战士”}; //赋值的方式3

    } 下面总结下结构体,就是相当于一个类,如果要用的话直接用就好,然后在打印的时候直接用就好,下面用一个简单代码实现一下,结构体的用法。 我的这个代码还是比较繁琐。 主要学会结构体的用法就好。

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include <stdlib.h> struct MyStruct { char name[100]; int dj; char work[10]; }; void main(){ struct MyStruct card1 = {"姓名:赵子龙",9,"职业:战士"}; struct MyStruct card2 = { "姓名:关羽", 12, "职业:战士" }; struct MyStruct card3 = { "姓名:张飞", 6, "职业:战士" }; struct MyStruct card4 = { "姓名:流浪法师", 6, "职业:法师" }; struct MyStruct card5 = { "姓名:伊泽瑞尔", 8, "职业:法师" }; struct MyStruct card6 = { "姓名:光辉女郎", 9, "职业:法师" }; struct MyStruct card7 = { "姓名:圣枪游侠", 9, "职业:ADC" }; struct MyStruct card8 = { "姓名:皮诚女警", 9, "职业:ADC" }; struct MyStruct card9 = { "姓名:大嘴", 9, "职业:ADC" }; printf("请输入你要选择的职业:1战士 2法师 3ADC\n "); int a = 0; scanf_s("%d",&a); if (a==1) { printf("你选择了战士\n"); printf("请选择你要的英雄 1赵子龙 2关羽 3张飞\n"); int n = 0; scanf_s("%d", &n); if (n == 1) { printf("%s\n %d\n %s\n", card1.name, card1.dj, card1.work); } if (n == 2) { printf("%s\n %d\n %s\n", card2.name, card2.dj, card2.work); } if (n == 3) { printf("%s\n %d\n %s\n", card3.name, card3.dj, card3.work); } } if (a==2) { printf("你选择了法师\n"); printf("请选择你要的英雄 1流浪法师 2伊泽瑞尔 3光辉女郎\n"); int n = 0; scanf_s("%d", &n); if (n == 1) { printf("%s\n %d\n %s\n", card4.name, card4.dj, card4.work); } if (n == 2) { printf("%s\n %d\n %s\n", card5.name, card5.dj, card5.work); } if (n == 3) { printf("%s\n %d\n %s\n", card6.name, card6.dj, card6.work); } } if (a == 3) { printf("你选择了ADC\n"); printf("请选择你要的英雄 1圣枪游侠 2皮诚女警 3大嘴\n"); int n = 0; scanf_s("%d", &n); if (n == 1) { printf("%s\n %d\n %s\n", card7.name, card7.dj, card7.work); } if (n == 2) { printf("%s\n %d\n %s\n", card8.name, card8.dj, card8.work); } if (n == 3) { printf("%s\n %d\n %s\n", card9.name, card9.dj, card9.work); } } system("pause"); }

    下讲到了共用体 共用体类型数据和结构体类型数据属于构造函数。 共用体在类型上与结构体相似, 二者的区别: 1结构体每个成员变量占有不同的贮存空间。 2而共用体变量所有成员共享同一内存单元。 3以最长的成员所占的内存作为共用体的储存空间。所有地址同一地址开始储存。 4,采用覆盖技术,在某一时刻,只能让一个成员起作用。

    union 共用体标志 { 数据类型 共用体成员1; 数据类型 共用体成员2; 数据类型 共用体成员3;

    } 下面的代码是一个任务简单人物的属性 代码还要改进 这个代码的问题在于。当你输入选择之后,会出现属性,但是不能连续输入。

    #define _CRT_SECURE_NO_WARNINGS #include<windows.h> #include<stdio.h> #include <stdlib.h> struct MyStruct { char 名字[20]; //主信息 short 等级; char 职业[20]; int 生命值; //主属性 int 魔法值; int 内功值; int 物理防御; int 魔法防御; int 物理攻击; int 魔法攻击; int 道术攻击; //副属性 int 闪避; int 准确; int 幸运; int 诅咒; int 暴击率; int 暴击力; //背包属性 int 红药; int 蓝药; int 天山雪莲; }; void mai() { srand(time(0)); struct MyStruct card1; sprintf(card1.名字,"九月我不撸"); card1.等级 = 60; sprintf(card1.职业, "战士"); printf("人物基本属性\n"); printf("姓名=%s,等级=%d,职业=%s\n", card1.名字,card1.等级,card1.职业); card1.生命值 = 15516; card1.魔法值 = 2430; card1.内功值 = 205; printf("\n人物主属性\n"); printf("生命值=%d\n 魔法值=%d\n 内功值=%d\n", card1.生命值, card1.魔法值, card1.内功值); card1.物理防御 = 549 + rand() % 248; card1.魔法防御 = 155 + rand() % 265; card1.物理攻击 = 435 + rand() % 563; card1.魔法攻击 = 10 + rand() % 41; card1.道术攻击 = 10 + rand() % 41; printf("物理防御=%d\n 魔法防御=%d\n 物理攻击=%d\n 魔法攻击=%d\n 道术攻击=%d\n", card1.物理防御, card1.魔法防御, card1.物理攻击, card1.魔法攻击,card1.道术攻击); card1.闪避 = 8; card1.准确 = 30; card1.幸运 = 0; card1.诅咒 = 0; card1.暴击率 = 0; card1.暴击力 = 0; printf("\n人物副属性\n"); printf(""); printf("闪避=%d\n 准确=%d\n 幸运=%d\n 诅咒=%d\n 暴击率=%d\n 暴击力=%d\n", card1.闪避, card1.准确, card1.幸运, card1.诅咒, card1.暴击率, card1.暴击力); system("pause"); } void mai1(){ struct MyStruct card1; card1.红药 = 3; card1.蓝药 = 5; card1.天山雪莲 = 6; printf("\n人物背包\n"); printf("红药=%d\n 蓝药=%d\n 天山雪莲=%d\n", card1.红药, card1.蓝药, card1.天山雪莲); system("pause"); } void main(){ printf("请选择你要查看的属性:1战士 2背包 \n"); int a = 0; scanf_s("%d",&a); if (a==1) { mai(); } if (a == 2) { mai1(); } else { printf("你的选择不正确"); int a = 0; scanf_s("%d", &a); } }
    转载请注明原文地址: https://ju.6miu.com/read-1302138.html
    最新回复(0)