在C语言中,我们是用结构体来存放一组类型不一样的数据。例如一个模特有身高(int)、姓名(char)、性别(bool)等。这个时候就需要用到结构体了。
struct 结构体名
{
结构体成员变量1;
结构体成员变量2;
······
};
示例:
struct person
{
int height; //身高
char name[20]; //姓名
char address[50]; //地址
bool gender; //性别,1为男,2为女
};
注意:大括号后面的分号(;)不能忘
结构体是程序员自己定义的数据类型,可以包含多个其他类型的数据,也可以包含其他结构体,也可以包含指向自己的结构体指针(通常指向下一个结构体)。而这种结构体指针是为了实现一些比较高级的数据结构,链表和树等。
结构体是一种程序员自定义的数据类型,可以用它来定义变量,例如:
struct person
{
int height; //身高
char name[20]; //姓名
char address[50]; //地址
bool gender; //性别,1为男,2为女
};
struct person studet;
struct person teacher;
struct person doctor;
上述代码就定义了三种变量,学生student,老师teacher,医生doctor。
struct person
{
int height; //身高
char name[20]; //姓名
char address[50]; //地址
bool gender; //性别,1为男,2为女
}student,teacher,doctor;
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
struct person
{
int height; //身高
char name[20]; //姓名
char address[50]; //地址
bool gender; //性别,1为男,2为女
};
/*
*
*
*/
int main()
{
struct person student;
struct person teacher;
struct person doctor;
printf("sizeof(person) is%d\n",sizeof(student));
}
运行结果:
sizeof(person) is76
因为bool类型在内存中占据1个字节。这说明结构体各个成员变量之间存在“缝隙”,并不是连续的存储在一片内存中的。C语言也提供了结构体成员之间内存对齐的方法,但是我们在这里就不过多介绍了,请读者自行查阅。
采用memset函数进行初始化,对结构体变量的值清零。
memset(&student,0,sizeof(student)); //注意要是用取值地府,因为结构体变量名不能表示其地址。
1.使用.来访问结构体中的成员变量
student.height=150;
scanf("%s",student.name);
struct person student;
struct person* p=&student;
(*p).height=182; //(*p)前后的括号不能少
strcpy((*P).name,"zunnajim);
2.使用->来访问(只能指针)
struct person student;
struct person* p=&student;
p->height=180;
strcpy(p->name,"zunnajim');
结构体变量可以被定义为数组,本质上与其他类型的数组变量没什么区别。
struct person master[10];
memset(master,0,sizeof(master));
strcpy(master[0].name,"zunnajim");
master[0].height=170;
struct person student;
struct person* p=&student;
(*p).height=182;
strcpy((*P).name,"zunnajim);
在C语言中,结构体的成员变量如果是基本数据类型(int,char,double)可以用=来赋值,如果是字符串,可以用strcpy函数来赋值。
如果把结构体变量的值赋给另一个结构体变量中,有两种办法。
1.逐个赋值
逐个赋值就是把一个结构体变量的成员一个一个赋给另一个结构体的成员变量中,这种方式比较复杂,而且耗时。
2.内存拷贝
另一种办法就是内存拷贝,C语言提供了memcpy(memory copy)函数来实现内存的拷贝。
函数声明:
void *memcpy(void *dest,const void *src,size_t n);
/*参数说明
*src:源内存变量的起始地址
*dest:目的内存变量的起始地址
*n:需要复制的字节数
*/
示例:
/*******************************************************
* Author : ZUNNAJIM
* Last modified: 2020-11-22 02:33
* Email : [email protected]
* blog : https://blog.csdn.net/weixin_45859425
* Filename : copy.c
* Description : This file is for copy methods for structure;
* *****************************************************/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
struct person
{
int age;
double height;
char name[20];
}student;
int main()
{
memset(&student,1,sizeof(student));
student.age=20;
student.height=180;
strcpy(student.name,"zunnajim");
printf("sizeof(student)=%d\n\n",sizeof(student));
struct person student2;
memcpy(&student2,&student,sizeof(student));
printf("student2.age=%d\n",student2.age);
printf("student2.height=%lf\n",student2.height);
printf("student2.name=%s\n",student2.name);
printf("sizeof(student2)=%d\n\n",sizeof(student2));
}
运行结果:
sizeof(student)=40
student2.age=20
student2.height=180.000000
student2.name=zunnajim
sizeof(student2)=40
结构体是多个变量的集合,作为函数的参数时就可以传递整个集合,也就是所有成员。如果结构体成员较多,影响程序的运行效率,所以最好的办法就是传递结构体的地址。
示例:
/*******************************************************
* Author : ZUNNAJIM
* Last modified: 2020-11-22 20:37
* Email : [email protected]
* blog : https://blog.csdn.net/weixin_45859425
* Filename : parameter.c
* Description :
* *****************************************************/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
struct person
{
int age;
double height;
char name[20];
}student;
void set_value(struct person *ptr)
{
ptr->age=20;
ptr->height=180;
strcpy(ptr->name,"zunnajim");
}
int main()
{
memset(&student,0,sizeof(student));
set_value(&student);
printf("student.age=%d student.height=%f student.name=%s\n",student.age,student.height,student.name);
}
运行结果:
student.age=20 student.height=180.000000 student.name=zunnajim
1. 参考官方文档:https://github.com/Leaflet/Leaflet.markercluster2. 效果图如图所示: 3.npm install leaflet.markercluster 运行此命令下载leaflet的markercluster插件4. angular4中放入到angular.json中(css样式和js文件)"node_mo...
// keybd_event函数可以模拟键盘输入,但是下面的例子你会发现只能输入字母和数字,对于符号不能输入,// 如果需要输入标点符号,可以参考MSDN上的Virtual-Key Codes表。例如'.'对应VK_OEM_PERIOD。char buf[] = {"Hello, World! 0123456789"}; for(size_t i=0; ; i++) { if(i >=
矩阵键盘驱动源文件:kernel/drivers/input/touchscreen/keyboard/s3c-keypad.ckernel/drivers/input/touchscreen/keyboard/s3c-keypad.hkernel/arch/arm/mach-s5pv210/mach-smdkc110.ckernel/arch/arm/plat-s5p/devs._矩阵键盘apk
1.判断邮箱格式是否正确的代码: // 利用正则表达式验证 -( BOOL )isValidateEmail:( NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" ; NSPredicate *emailTest = [ NSPredi_ios 最具代表性的代码
mapping格式长这样:例如 crowd 存储 为 我爱中国到es里面的存储 会变成 我 爱 中国 这时候 全匹配的查找(我爱中国) 是找不到这条数据的 但是 用 match 却是可以的,原因为 被分词了text类型 可以被分词 但是 keyword 分词是不能用的 要全匹配存进es为 我爱中国为了不同的目的,以不同的方式索引同一字段通常是有用的。这是多领域的目的。..._text和keyword
JOIN字句用于通过使用共同值来组合来自多个表的字段类似于SQL中的JOIN,具有JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN四种连接,基本语法如下:table_reference JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTE_hive连接查询
#--enable-malloc0returnsnull 加了此项就不用去改configure, 相当于#vi configure to find "cannot run test program while cross compiling"#modify { (exit 1); exit 1; }; } to }##编译环境: ubuntu 8.04 LTS / cross co
作者 | Alan Bi译者 | 武明利,责编 | Carol出品 | AI科技大本营(ID:rgznai100)如今,机器学习和计算机视觉已成为一种热潮。我们都看过关于自动驾驶汽车和面..._detect怎么用gpu
归并排序func sortArray(nums []int) []int { if len(nums) <= 1 { return nums } partA := sortArray(nums[:len(nums)/2]) partB := sortArray(nums[len(nums)/2:]) temp := m..._golang sort array
一、准备数据集mmdetection默认使用coco数据集,这里我的原始数据集为PascalVOC格式,先进行数据集转换。各种数据转换项目里边都有现成的代码。cmd到D:\mmdetection-master\tools\dataset_converters文件夹,激活环境,输入如下命令:python pascal_voc.py D:\mmdetection-master\coco_data --out-dir D:\mmdetection-master\coco_data\VOC2007 -_mmdetection 本地数据集
ORBSLAM2--OptimizerPoseOptimization函数原型数学理论G2O的实现求解器的创建顶点的创建边的创建优化迭代PoseOptimization函数原型/** * @brief Pose Only Optimization * * 3D-2D 最小化重投影误差 e = (u,v) - project(Tcw*Pw) \n * 只优化Frame的Tcw,不优化...
1.Pod 启动时一直处在 Container Creating状态2.Pod数量限制3. 无法弹性伸缩4. Docker Hub 下载镜像1.Pod 启动时一直处在 Container Creating状态The pod has been stuck in the pending state for more than five minutes 检查P...