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;
四、枚举类型
适用场合:当一个变量的取值,只允许有几个固定取值时
根据变量的作用域,可以分为:
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;
四、枚举类型
适用场合:当一个变量的取值,只允许有几个固定取值时
相关文章推荐
- 黑马程序员——零基础学习iOS开发——05 C语言:进制、内存储存细节、类型说明符、位运算、数组
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型
- 黑马程序员之ios学习总结——06 C语言的变量类型和结构体
- 【零基础学习iOS开发】【02-C语言】07-基本数据类型
- 【零基础学习iOS开发】【02-C语言】06-变量与内存
- 【学习ios之路:C语言】数据类型、常量变量、运算符、表达式、格式化输入输出
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】06-变量与内存
- iOS学习笔记之-C语言基础02(关键字、标识符、注释、数据类型)
- 【iOS开发基础教程】C语言 const类型变量
- 【黑马程序员】iOS学习之路——C语言之数据类型、常量、变量
- 【零基础学习iOS开发】【02-C语言】04-常量、变量
- 李洪强iOS开之【零基础学习iOS开发】【02-C语言】04-常量、变量
- 黑马程序员-IOS学习笔记-C语言基础其他数据类型及总结
- 数据类型,运算符和表达式05 - 零基础入门学习C语言06
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- 结构体与共用体06 - 零基础入门学习C语言58
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- 结构体与共用体07 - 零基础入门学习C语言59
- 结构体与共用体05 - 零基础入门学习C语言57
- 结构体与共用体03 - 零基础入门学习C语言55