C++中结构体详解及mem* 内存操作函数
来源:互联网 发布:c语言中什么叫关键字 编辑:程序博客网 时间:2024/04/27 22:01
1、结构体的声明:struct 结构体名[可省]{成员列表}变量列表[可省](多个变量用逗号隔开);
例1:struct Employee
{
char strEmpID[10];
……
}Emp; //Emp为结构体变量
例2:struct Employee
{
char strEmpID[10];
……
}; //缺省
struct Employee Emp;//定义属于Employee 的结构体变量
例3:struct {
char strEmpID[10];
……
}Emp; //该法只能在创建结构体时定义该结构体的变量,此法适用性较差
2、目前一般用下述定义方法:
typedef struct Employee[可省]
{
成员列表
}Emp,*pEmp; //Emp为类型,pEmp为指针;均是结构体名,而非变量。
Emp e2; //e2为结构体变量
pEmp e3=NULL; //等价于Employee* e3=NULL;
e3=&e2;
strcpy(e3->strEmpID,”1000”); //对第0个位置赋值
strcpy((e3+1)->strEmpID,”1002”); //”1002”表示长度为5,(e3+1)即e3[1] ,对第1个位置赋值
typedef Employee Emp;
typedef Employee* pEmp;
e3=( Employee*) malloc(10*sizeof(Employee));
free(e3); //malloc 必须与free对应,否则会造成资源泄漏
e3=new Employee[10]; //10个空间
delete[] e3;
3、结构体变量引用
同类结构体变量可以互相直接赋值,如Emp e1,e2; e1 = e2;
非指针变量用"."来使用结构体成员变量,如e1.strEmpID;在指向结构体变量的指针变量中使用 "->"。即有:结构体名.成员名 <=> p->成员名 <=>(*p).成员名。
4、结构体初始化:
可选择针对某个结构体变量的成员逐个进行初始化,或者对整个结构体变量初始化。但整体初始化只能在定义结构体变量的时候进行。例:
struct aa{
int a;
int b;
}test1={1,2},test2={3,4};
struct aa test3={4,6};
对于单个成员赋值只需用:" 结构体变量名.成员名 = ;"
5、结构体变量可为数组,如:
struct aa{
int a;
int b;
}aaa[3];
mem* 内存操作函数
(1) 内存之间拷贝字符
void * memcpy(void *dest,const void *src,size_t count);
(2) 给内存块设定特定的字符值
void *memset(void *dest,int c, size_t count); // dest表示内存块地址
eg: memset(&e1,0,sizeof(Employee)); //清0
(3)拷贝字符,遇到C停止且返回dest或拷贝个数为count停止
void *_memcpy(void *dest,const void *src,int c,unsigned int count);
eg: void main()
{int n;
int nsrc=100;
memcpy(&n,&nsrc,sizeof(int));
Employee e1;
strcpy(e1.strEmpID,”1000”);
Employee e2;
memcpy(&e2,&e1,sizeof(Employee)); //e2=e1 当Employee中含指针时就不可以了;此外当e1为指针时不用&
}
- C++中结构体详解及mem* 内存操作函数
- C跟C++mem函数的类型及用法
- java中内存结构及堆栈详解
- c 操作函数,所在函数库为string.h、mem.h
- Linux C 函数 内存及字符串操作
- C语言结构体中定义函数指针详解
- C语言结构体中定义函数指针详解
- mem函数系列及举例
- C语言中内存操作函数
- C语言中内存操作函数memset
- C语言中内存操作函数memcmp
- c语言中内存及static详解
- C/C++中结构体变量及指向结构体指针变量的内存分配问题
- 【C语言】 字符串操作函数及内存拷贝函数归总
- c内存操作函数
- C内存操作函数
- 利用/dev/mem和mmap读写linux内存的通用C代码及原理
- 常用内存池的实现 mem.c
- CorelDRAW和AutoCAD二次开发软件
- linux下设置接收超时
- 免费资源:350个超棒标志性字符图标
- 国外较好的IT网站
- 黑马程序员—HTML基础(css+标签)
- C++中结构体详解及mem* 内存操作函数
- js保留两位小数
- 怪诞心理学——很有趣哦! 1
- ViewStub用法
- 分享10个使用简单的jQuery的拖放插件(drag and drop plugin)
- 结构体初始化
- 欧拉函数及其延伸
- 一个眼神 比亚迪车载机器人为你点歌
- android之widget