您的位置:首页 > 编程语言 > C语言/C++

IOS学习---C语言基础学习7(变量类型与结构体)

2014-10-18 22:19 323 查看
变量类型:

根据变量的作用域,可以分为:

1、局部变量:

定义:在函数(代码块)内部定义的变量

作用域:从定义变量的那一行开始,一直到代码块结束

生命周期:从定义变量的那一行开始,分配存储空间,代码块结束后就会被回收。

初始值:没有固定的初始值

2、全局变量

定义:在函数外面定义的变量

作用域:从定义变量的那一行开始,一直到文件结尾(能被后面所有的函数共享)、

生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁

初始值:默认的初始值是0

结构体

构造类型:

数组:只能存放一种类型的数据(缺点)

结构体:可以由多个不同类型的数据构成

定义:

格式: 结构体类型 结构体变量名;

1、定义结构体类型

struct Person

{

//里面的3个变量,可以称为是结构体的成员或者属性

int age;//年龄

double height;//身高

char *name;//姓名

};

2、根据结构体类型定义结构体

struct Person p;

p = {20,1.55,"jack"};

错误

struct Person p = {20,1.55,"Jack"}; 正确

struct Person p = {.hegth=1.6,.age = 32;.name="jack"} 正确 可以不按顺序赋值

p.age = 30;

p.name = "rose";

printf("%d%s%f",p.age,p.name,p.height);

注意:

1、定义结构体类型并不会分配存储空间

2、定义结构体变量(真正分配内存空间)

struct Person p1 = {20,1.7,"ali"};

struct Person p2 = {21,1.8,"lee"};

p2=p1;//会将p1所有成员的值对应的复制给d2的所有成员

补齐算法(对齐算法):

结构体所占的存储空间,必为其中占据最大空间的元素的倍数

struct student

{

int age;4个字节

char *name;//8个字节

};

struct student stu;

int s = sizeof(stu);

printf("%d",s);

结果为 16;

结构体定义的另一种方法:

struct student

{

int age;

double height;

char *name;

}stu;

这句代码做了两件事:

1、定义结构体类型

2、利用新定义好的类型来定义结构体变量

结构体定义的第三种方法

struct

{

int age;

char *name;

}stu;

只能定义stu一个 没能定义其他的

结构体类型也是有作用域的,从定义类型的那一行开始,

一直到代码块结束

结构体数组:

struct student stu[3] = {{20,1.5,"kiki"},{},{}};

指向结构体的指针

struct student *p;

指针变量p将来指向struct student 类型的数据

p=&stu;\

指针变量p指向了stu变量

利用指针访问结构体的成员变量

(*p).age,(*p).name

或者

p->age,

printf("%d%s",p->age,p->name);

三种访问结构体成员变量的方法:

printf(”%d“,stu.age);

printf("%d",(*p).age);

printf("%d",p->age);

结构体的嵌套定义:

struct date{

int year;

int month;

int day;

};

struct student

{

int no;//学号

struct date birthday;//生日

struct ruxuedate;//入学日期

}

struct student stu ={1,{2000,9,10},{2002,9,10}};

printf("year=%d,month=%d,day=%d",stu.birthday.year,stu.birthday.month;stu.birthday.day);

枚举类型:

1、定义枚举类型

enum season

{

spring,

summer,

autumen,

winter,

};

2、定义枚举变量

enmu season s = summer;

适用范围:取值有固定的几个取值

数据类型总结:

一、基本数据类型

1、int

①、long int 、long :8个字节 %ld

②、short int 、shrot:2个字节 %d %i

③、unsigned int,unsigned:4个字节 %zd

④、signed int ,signed、int:4个字节%d,%i

2、float\double

①、float 4个字节%f

②、doubel 8个字节%f

3、char

①、1个字节 %c,%d

②、char类型保存在内存中的是他的ASCII码值

‘A’-> 65

二、构造类型

1、数组

①、只能由同一种数据类型数据组成

②、定义:数据类型 数组名[元素个数]

2、结构体

①、可以有不同类型的数据组成

②先定义类型、再利用类型定义变量

三、指针类型

1、变量的定义

int *p;

2、间接操作的变量的值

int a = 10;

p = &a;

*p = 20;

四、枚举类型

适用场合:当一个变量的取值,只允许有几个固定取值时
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐