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

黑马程序员——C语言——数据类型的一些补充与小结

2015-04-11 21:19 435 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

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

1.局部变量:

1>.定义:在函数(代码块)内部定义的变量,包括函数的形参

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

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

4>.没有固定的初始值

2.全局变量

1>.定义:在函数外面定义的变量

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

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

4>.默认的初始值就是0

2.结构体

1>.数组:只能由多个相同类型的数据构成

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

includ

int main ()

{

//1.义结构体类型

struct person

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

int age ;

double height;

char *name;

};

//2.根据结构体类型,定义结构体变量

struct person p = { 20,1.55,"jack" };
p.age=30;
p.name="rose";

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

struct person p2={30,1.67,"jack"};
//或者 p2.age=25;

//结构体类型 结构体变量名;

return 0;


}

include

int main ()

{

//定义结构体类型(并不会分配存储空间)

struct date

{

int year;

int month;

int day;

} ;

//定义结构体变量 (真正分配存储空间) 2002-09-10

struct date d1={ 2011,9,10};

int s=sizeof(d1) ;

printf(“%d\n”,s);

return 0;

}

include

int main ()

{

//定义结构体类型(并不会分配存储空间)

struct date

{

int year;

int month;

int day;

} ;

//定义结构体变量 (真正分配存储空间) 2002-09-10

struct date d1={ 2011,9,10};

struct date d2={2012,8,9    };
//会将d1所有成员的值对应的赋值给d2的所有成员
d2=d1;
d2.year=2010;

printf ("%d - %d - %d\n",d1.year,d1.month,d1.day);
printf ("%d - %d - %d\n",d2.year,d2.month,d2.day);


/* printf (“%p - %p - %p\n”,&d1.year,&d1.month,&d1.day);

int s=sizeof(d1) ;

printf(“%d\n”,s); */

return 0;

}

补齐算法(对齐算法)

结构体所占用的存储空间必须是最大成员字节数的倍数

include

/*

1.定义结构体变量的3种方式

1>.先定义类型,在定义变量(分开定义)

struct student{

int a;

};

2>.定义类型的同时定义变量

struct student

{

int age ;

} stu;

struct student stu2;

3>.定义类型的同时定义变量(忽略了类型的名称)

struct student

{

int age ;

} stu;

*/

int main ()

{ //定义结构体变量的第3种方式

struct

{

int age;

char *name;

}stu;

struct {

int age;

char *name;

}stu 2;

//结构体类型型不能重复定义
/*  错误写法:结构体类型重复定义
struct student
{
int age;
double height;
char *name;
} stu;

struct student
{
int age;
double height;
char *name;
} stu2;


*/

/*
这句代码做了两件事情
1.定义结构体类型
2.利用新定义好的类型来定义结构体变量
*/
//定义变量的第2中方式:定义类型的同时定义变量

struct student
{
int age;
double height;
char *name;
} stu;

struct student stu2;


/* //定义变量的第一种方式

//1.类型

struct student

{

int age;

double height;

char *name;

} ;

//2.变量
struct student stu ={20,1.78,"jack"
};
*/
return 0;


}

include

/*

1.指向结构体的指针的定义

struct studrent *p;

2.利用指针访问结构体的成员

1>.(*p).成员的名称

2>.p->成员名称

*/

int main ()

{

struct student

{

int no;

int age;

};

//结构体变量

struct student stu ={1,20};

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

//指针变量P指向了stu变量
p=&stu;

p->age=30;
//第一种方式
printf("age=%d,no=%d\n",stu.age,stu.no);

//第二种方式
printf("age=%d,no=%d\n",(*p).age,(*p).no);
(*p).age;

//第三种方式
printf("age=%d,no=%d\n",p->age,p->no);

return 0;


}

include

int main ()

{

struct date

{

int year;

int month;

int day;

} ;

//类型
struct student
{
int no;//学号
struct date birthday;//生日
struct date ruxuedate;//入学日期

//这种写法是错误的
//struct student stu;自己不能包括自己
};
struct student stu={1,{2000,9,10},{2012,9,10}};

printf("year=%d,month=%d,day=%d\n",stu.birthday.year,stu.birthday.month,stu.birthday.day);
return 0;


}

枚举

#include

int main ()

{

enum sex{man,woman,unknow};

//0男 1女 -1不详

//int sex =-1;

// enum sex s =unknow;

//1.定义枚举类型
enum season
{
spring=1,
summer,
autumn,
winter

} ;
//2.定义枚举变量
enum season s=winter;
printf("%d",s) ;
return 0;


}

一.基本数据类型

1.int

1>.long int .long :8个字节 %ld

2>.short int. Short :2个字节 %d,%i

3>.unsigned int . Unsigned : 4个字节 %zd

4>.signed int . Signed . Int 4个字节 %d,%i

2.float,double

1>.float:4个字节 %f

2>double:8个字节 % f

3.Char

1>.1个字节 %c,%d

2>.char 类型保存在内存中的是它的ASCII值’A’–>65

二.构造类型

1.数组

1>.只能由同一种类型的数据组成

2>.定义:数据类型 数组名[元素的个数];

2.结构体

1>.可以由不同的类型数据组成

2>先定义类型,子啊利用类型定义变量

三.指针类型

1.变量的定义

Int * p;

2.间接操作变量的值

Int a=10;

P=&a;

*p=20;

四.枚举类型

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