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);
}
}