IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> day16.2-结构体数组赋值 -> 正文阅读

[游戏开发]day16.2-结构体数组赋值

一、用下标手动给字符数组赋值

  • 先给字符数组赋值,并且手动添加结束标志0x0或者'\0'都表示一字节十六进制数0x0;最后使用%s打印

    #include "stdafx.h"
    struct Test{
        char arr[10];
    };
    void main(int argc,char* argv[]){
        Test t;
        t.arr[0] = 'z';
        t.arr[1] = 'j';
        t.arr[2] = 'j';
        t.arr[3] = '\0';       //手动赋值时,如果只赋值zjj三个字节数据,那么最后一定要加一个0x0表示结尾,不然后面使用%s打印会打印出来分配给数组的arr[3] 到 arr[9]内存空间中的垃圾数据cc..(烫烫烫...)
        printf("%s",t.arr);
    }
    

    有一个疑问?为什么在结构体中定义char类型的数组,在定义了Test t为t.arr分配内存时,不是挨着从栈顶的低地址开始,而是要空出来两字节内存,从[ebp - 3]开始存储

    屏幕截图 2021-12-11 091937

二、通过strcpy给赋值

  • 通过C语言内置的别人写好的函数调用传参来给字符数组赋值

    #include "stdafx.h"
    #include "string.h"   //一定要先告诉编译器,strcpy这个函数哪里来的,就是从这个string.h来的
    struct Test{
        char arr[10];
    };
    
    void main(int argc,char* argv[]){
    	Test t;
    
    	//strcpy(t.arr,"中国");传中文也可以,只是使用GBK两个两个字节的读
    	strcpy(t.arr,"zjj");  //不用加0了
        printf("%s",t.arr);
    	getchar();
    }
    

三、结构体数组赋值

  • 一个数组中还可以存放多个结构体类型元素

    #include "stdafx.h"		
    #include "string.h"		
    		
    struct student{		
    	int num;	
    	char name[20];	
    	char sex;	
    	int age;	
    	int score;	
    	char addr[30];	
    };		
    int main(int argc, char* argv[]){		
    	student stu[10];   //结构体数组
    		
    	stu[0].num = 1001;	    //结构体数组赋值
    	strcpy(stu[0].name,"张三");	
    	stu[0].sex = 'M';	
    	stu[0].age = 20;	
    	stu[0].score = 98;	
    	strcpy(stu[0].addr,"上海");
    	printf("%d %s %c %d %d %s\n",stu[0].num,stu[0].name,stu[0].sex,stu[0].age,stu[0].score,stu[0].addr);
    	return 0;	
    }
    

四、作业

  • 定义一个结构体Monster,能够存储怪的各种信息(至少有一个成员是结构体类型)

  • 声明一个Monster类型的数组,长度为10

  • 编写一个函数,为第二题中的数组赋值

  • 编写一个函数,能够通过怪物ID,打印当前这个怪物的所有信息

    #include "stdafx.h"
    #include "string.h"
    typedef struct direction{
        int x;
        int y;
        int z;
        float time;
    }dir;   //定义别名
    typedef struct Monster{
        char name[10];
        int id;
        short level;
        dir d;
    }mon;  //定义别名
    
    mon arr[10];   //结构体数组,全局变量
    
    void Func(){ //赋值函数
        strcpy(arr[0].name,"风龙");
        arr[0].id = 1;
        arr[0].level = 10;
        arr[0].d.x = 1;
        arr[0].d.y = 1;
        arr[0].d.z = 1;
        arr[0].d.time = 100;
        strcpy(arr[1].name,"火龙");
        arr[1].id = 2;
        arr[1].level = 20;
        arr[1].d.x = 2;
        arr[1].d.y = 2;
        arr[1].d.z = 2;
        arr[1].d.time = 200;
        strcpy(arr[2].name,"水龙");
        arr[2].id = 3;
        arr[2].level = 30;
        arr[2].d.x = 3;
        arr[2].d.y = 3;
        arr[2].d.z = 3;
        arr[2].d.time = 300;
        //......
    }
    
    void Func2(int id){  //打印指定id的怪物信息
        for(int i = 0;i < 10;i++){
            if(arr[i].id == id){
                printf("怪物id为%d的怪物信息:\n姓名\tid\t等级\t坐标\t刷新时间\n",id);
                printf("%s\t%d\t%d\t(%d,%d,%d)\t%f",arr[i].name,arr[i].id,arr[i].level,
                       arr[i].d.x,arr[i].d.y,arr[i].d.z,arr[i].d.time);
            }
        }
    }
    int main(int argc,char* argv[]){
        Func();
        Func2(2);
        return 0;
    }
    
    image-20211211102252850
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:37:15  更:2022-04-27 11:39:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:04:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码