结构体

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值