C语言之数据类型,C语言之数据类型

7.27

sizeof

c语言的操作符,用于计算为数据类型分配的内存的大小,以字节为单位

语法格式:

sizeof(数据类型或者变量);返回类型为: size_t

Demo:

#include

int main(void)

{

int myInt = 100;

size_t nSizeIntVar = sizeof(myInt);  //sizeof()很像函数调用,但是一定要记住,sizeof()是运算符

//%lu 表示输出nSizeIntVar这个变量的时候,将其作unsigned

long来解释

printf(“the var myInt’s size is

%lu\n”,nSizeIntVar);

size_t nSizeInt = sizeof(int);

printf(“the Int’s size is

%lu\n”,nSizeInt);

float myFloat = 22.23f;  //在字面常量后面加字母f表示,直接说明它是一个float,如果不加f,小数这样的字面常量属于double类型

printf(“the size of float var is

%lu\n”,sizeof(myFloat));

return 0;

}

数据类型

基本数据类型:

整型

字符型[char](占1个字节)

短整型[short int](占2个字节)

整型[int](占4个字节)

长整型[long int](占8个字节)

都分为有符号(siged)和无符号(unsiged)

整型字面值:

源代码直接书写的整型数值就是整型字面值(字面值就是字面值常量的缩写,其特点是指定了自身的值以后,不允许发生改变)

字面值还可以使用八进制表示(在数值前面以0开头)

还可以使用十六进制表示(在数值前面加0x开头)

枚举类类型(enum)

声明枚举类型的格式:

enum 枚举名{枚举值列表,列表以逗号隔开};

EG:

enum

weekDays{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};

在枚举中应罗列出所有可能值,这些也称为枚举元素。

枚举元素由系统定义一个从10开始的序号,如果程序员不赋值,第二个元素是上一个元素➕1.

定义一个枚举类型变量,可采用下述任一种:

enum weekDays myWorkDay;

enum weekDays {

Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday }

myWorkDay;

enum {

Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday }

myWorkDay;

对于枚举变量myWorkDay,它的值只能是枚举元素的其中一个,不能超出范围

作用:

枚举类型实际上是整型变量,只不过枚举类型是将一类有关联的标识符组合起来,增加程序的可读性和可维护性

浮点型

单精度[float](占4个字节)

双精度[double](占8个字节)

扩展精度[long double](占16个字节)

数组

相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组

数组是用一个单一的变量表示一个变量列表

是在内存中一块连续的存储单元,数据存在于这些单元中

数组的声明格式:

类型说明符  数组名[常量表达式]

EG:

int a[10]

表示数组名为a,有10个元素,并且每个元素的类型都是int型

注意:

常量表达式要有方括号括起来,不能用圆括号

常量表达式表示数组元素的个数,即数组长度,并且数组的第一个元素是从下标0开始的

常量表达式可以是常量也可以是符号常量,不能包含变量

数组名不能与其他变量名相同

允许在同一个类型说明中,说明多个数组和多个变量

使用数组时要注意,一定要小于定义数组的长度,放置数组溢出

数组名代表数组的地址,数组转化为指针用[]

数组在高地址,变量在低地址

数组初始化:

在定义数组时,对数组元素赋值  eg:int

a[10]={0,1,2,3,4,5,6,7,8,9} ;不能:int a[10];

a[10]={….};

可以只给一部分元素赋值  eg:int

a[10]={0,1,2,3,4};表示只给数组的前5个元素赋初值,后5个元素的值系统自动默认为0

在对全部数组元素赋初值时,可以不指定数组长度  eg:int a[5]={0,1,2,3,4};等于int

a[]{0,1,2,3,4};

数组必须先定义,后使用。只能逐个引用数组元素,而不能一次引用整个数组。

数组的引用形式为:数组名[下标](其中下标可以是整型常量,也可以是整型表达式eg:a[0]=a[5]+a[7]+a[2*3])

数组Demo:

int main(void)

{

int i,j;

int a[10];

for(i = 0;i <= 9;i++)  //顺序给数组元素赋初

a[i] = i;

for(j = 0;j <= 9;j++)  //顺序输出数组元素

printf(“%d”,a[i]);

return 0;

}

结构体

结构体是聚合类型,结构也是一值的集合,这些值称为它的成员(member),但是一个结构的各个成员可能具有不同的类型。每个结构成员都有自己的名字,它们是通过名字访问的

结构体的声明和定义形式

struct tag {成员列表}

变量列表(成员列表以分号隔开,变量列表以逗号隔开。tag可以省略

定义结构体

typedef:

EG:

struct

{

int age ;

int workExperience;

double salary;

}manager;

typedef

C语言支持一种叫作typedef的机制,它 允许你为各种数据类型定义新名字

EG:

声明:char

*prtToChar;是指变量prtToChar声明为一个指向字符的指针

对于结构体的声明:

typedef struct employee{

int age;

int workExperience;

double salary;

}employeeType;

后续定义雇员结构类型的时候,就可以直接使用这样的方式employeeType

manager

结构体初始化

EG:

struct

{

int age;

int workExperience;

double salary;

}manager = {20,10,15781.33};

注:只有在初始化的时候才能用{}来赋值

结构成员访问方法

结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数,左操作数是结构变量的名字,右操作数就是需要访问的成员值

派生数据类型:

联合体(union)

当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体

联合体是一个结构;

它的所有成员相对于基地址的偏移量都为0

union中可以定义多个成员,union的大小由最大的成员的大小决定

由于联合体中的所有成员是共享一段内存的,所以所有成员的首地址都是一样的,一次只能使用其中一个成员

对某一个成员赋值,会覆盖其他成员的值

union的存放顺序是所有成员都从低地址开始存放的

Demo:

#include

int main(void)

{

union{

int a;

char b;

double d;

//char arr[100]; 其结果是104

}myUnion;

//union类型的变量,其成员是共享内存,union类型的变量的大小是其成员最大的那个变量空间

printf(“the size of myUnion is

%lu\n”,sizeof(myUnion));

return 0;

}

聚合类型(如数组和结构)

字符串

字符串就是一串零个或多个字节,并且以一个位模式为全0的NUL字节结尾(\0)

字符串以字符常串常量的形式出现或者存储在字符数组中(字符串是以字符数组存放的)

计算机在储存字符串字面常量的时候,会自动在其末尾添加一个结束\0

附加:

getch():该命令可以在运行的时候按任意键退出,如果没有此命令,有时候屏幕闪一下就没了(程序结束就退出) ‘  ’:是字符

“  ”:是字符串

enum

weekDays myWorkDay;

enum

weekDays

{Monday,Tueaday,Wednesday,Thursday,Friday,Saturday,Sunday}myWorkDay;

enmu{

Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}myWorkDay;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值