结构体

来源:互联网 发布:linux进程占用cpu过高 编辑:程序博客网 时间:2024/05/18 14:42

1.定义: 结构体是程序员自己创建的一种数据类型

2. 结构体的创建

2.1 格式

struct Example{    int i; //成员变量    char ch;    double d;};typedef struct{    int i;    char ch;    double d;}Example1;

2.2 如何使用结构体定义变量,操作变量

 struct Example s;        s.i=10; //点是一个成员运算符        s.ch='a'; //结构体变量的成员只能逐个操作        s.d=3.14;        NSLog(@"%d,%c,%lg",s.i,s.ch,s.d);        Example1 s1={20,'b',2.68}; //用typedef struct 定义在用的时候可以不用在Example前面写struct;        NSLog(@"%d,%c,%lg",s1.i,s1.ch,s1.d);

2.3 初始化

Example1 s1={20,'b',2.68};

2.4 结构体指针及访问成员变量的方法

Example1* p = &s1;  //通过指针对成员变量,要使用->这个成员运算符        p->i=30;        p->ch='c';        p->d=9.9;        NSLog(@"%d,%c,%lg",p->i,p->ch,p->d);2.5 结构体数组及初始化tExample1 s2[3]={ //结构体数组            {10,'a',3.14},            {20,'b',2.68},            {30,'c',9.9}        };        s2[0].ch='d';        for(int i=0;i<3;i++){            NSLog(@"%d,%c,%lg ",s2[i].i,s2[i].ch,s2[i].d);        }

3 字符对其

3.1.找到结构体中占内存最大的的成员
3.2.以该成员所占的字节数为单位,为每个成员分配空间
3.3.从第二个成员开始,将待分配的字节编号除以该成员所占的字节数,如果余数为0,则进行分配。否则空出该字节用下一个分配。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

4 结构体作函数形

4.1值传递 (不建议使用)
4.2 地址传递 (一般都使用地址传递)

typedef struct{    char name[100];    BOOL gender;    int age;}Person;void setPerson(Person* p,char* name,BOOL gender,int age){     strcpy(p->name,name);    p->gender=gender;    p->age=age;}int main(){    @autoreleasepool {        Person per;        setPerson(&per, "jom", YES, 18);        print(&per);    }}
0 0
原创粉丝点击