黑马程序员---IOS---结构体概念及用法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----结构体概念及用法

一、定义

结构体是由若干“成员”构成,每一个成员都是一个基本数据类型或者一个构造类型。

二、使用形式

struct 结构名{成员列表};

例如:struct student{

int num;

char name[20];

char sex;

float score;

                               };

注:1、结构体定义完成后,不会立即对其分配内存空间,只有在定义结构体变量后才会分配空间。

三、结构体变量

定义形式有2种:

(1)先定义结构体,然后定义结构体变量。

例如:

struct student{

int num;

char name[20];

char sex;

float score;

                       };

struct student stu1;

(2)定义结构体的同时定义变量

例如:

struct student{

int num;

char name[20];

char sex;

float score;

                       }stu1;

注:结构体变量的初始化同定义一样,都有两种方法,这里不再具体阐述。

四、结构体占用内存大小

结构体数据遵循模数对齐原则,因此结构体长度为模数的倍数。具体参照下面程序示例:

struct student{

int  num;

char sex;

float score;

}stu1;

该数据结构中int占4字节,char占1字节,float占4字节,数据占得最大字节数为4,故模数为4,按照模数对齐原则,结构体长度为12。

struct student{

short  num;

char sex;

float score;

}stu1;

上面例子中short占2字节,char占1字节,float占4字节,故模数为4,但前面short和char总共才占3个字节,故4个字节空间可以存放两个变量,因此结构体长度为8。

五、结构体作用域

(1)定义在函数内部的结构体作用域和局部变量相同,都是作用到代码段结束。

(2)定义在函数外部的结构体作用域和全局变量相同,都是作用在整个程序内。

六、结构体数组

定义:每一个元素都是具有相同结构数据类型的数组。

格式:struct 结构名{成员列表}数组名[数组长度];

初始化:2种方式

(1)先定义后初始化

struct student{

char  name;

float score;

}stu1[2];

struct student stu1[2]={{"abc",70},{"bcd",86}};

(2)定义的同时初始化

struct student{

char  name;

float score;

}stu1[2]={{"abc",70},{"bcd",86}};

七、结构体嵌套

结构体成员也可以是一个结构体,这样就构成了结构体的嵌套。

注:结构体不可嵌套自己这个类型的变量,但可以嵌套自己这个类型的指针变量,也可以嵌套其他类型的结构体。下面是一个嵌套的程序示例:

struct Data{

  int year;

  int montc;

  int day;}birthday;

struct student{

   char name;

    int score ;

    struct Data birthday;//可以嵌套其他类型的结构体

    struct student *stu1;//可以嵌套自己类型的指针

    }stu1;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值