C语言——数据类型的一些补充与小结

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

四.枚举类型
使用场合:当一个变量只允许有几个固定取值时,用枚举

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值