C语言基础(二):数据类型

数据类型涉及到数据在内存中的存储位置及内存大小的问题。在程序中声明变量后,编译器就会为该变量分配相应的内存单元.也就是说,每一个变量在内存会有固定的位置,有具体的地址.由于变量的数据类型不同,它所占的内存大小也不相同.在程序编译时,编译器将指定数据所需要的存储空间长度,程序运行中,则由操作系统为这些数据对象分配内存单元.

1、数组

数组由连续的存储单元组成,最低地址对应于数组的第一个单元,最高地址对应于数组的最后一个单元.数组的第一个元素下标为0,最后一个元素下标为数组长度减1.

字符数组与字符串数组的区别:字符串数组与一般的字符型数组的区别是字符串数组包含字符串结束符”\0”,该符号的ASCII码值为0.字符串一维数组的长度要比实际字符串的长度大1.

char c1[] = {‘c’, ‘h’, ‘i’, ‘n’, ‘a’}; //字符数组

char c2[] = “china”;  //字符串数组

C语言并没有将字符串作为独立的数据类型,但允许使用字符串常量和字符串数组,并在标准函数库里提供了一些常用的字符串操作函数.

注意:只有包含字符串结束符的数组才被认为是字符串数组,字符数组则不能被函数当作字符串进行处理.

2、 指针

指针是一种特殊的变量,该变量所存放的“内容”是内存的地址,通过指针变量可以间接访问所指向内存空间的内容.

变量在内存中按照数据类型的不同所占内存的大小也不同,每个变量都有具体的内存单元地址.而访问变量,首先应该找到其在内存中的地址,或者说,一个地址唯一地指向一个内存变量,称这个地址为变量的指针.如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量,通过指针变量对所指向变量的方式,实质就是一种对变量的间接访问。因此,指针变量就是包含内存地址的变量.一般的变量直接包含一个特定的值,而指针变量包含的是某一特定数据类型的内存变量.普通变量直接引用其中的值,指针变量则间接引用所指向内存地址中的值。指针变量在使用前需要声明与初始化。利用指针变量可直接改变内存中某一单元的值,这是一种对系统底层的访问.指针变量为复杂的操作带来便利的同时,也存在很大的安全隐患.使用不当时,容易引起程序的终止甚至系统死机.

数组与指针:二维数组与多维数组都能看作是一维数组进行指针操作;二维数组i[m][n]每一行都有一个首地址,如i[0]代表i[0][0]的地址,i[1]代表i[1][0]地址.因此,二维数组也可以看作是m个长度为n的一维数组,引用二维数组需要将每行的首地址赋值给指针变量.

指针与字符串数组:字符型指针变量指向字符串数组首地址后,该指针即可当作字符串使用.

声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围。虽然每次尝试将指针变量所存储的内存地址输出会发现:任何类型的内存地址长度都是一样的,但是不同类型之间却不能相互赋值,只有空值类型除外.

3、结构体

现实生活中某一类事物的共同属性可能是由不同数据类型组成的集合,或者某一属性在不同的情况下表现为不同的属性类型。结构体是一种复合数据类型,它由不同数据类型的存储单元组成。结构体的成员在内存的连续空间中顺序存储.

结构体类型数组:本质上是作为数组存在,数组的元素是结构体变量.结构体数组的名称即是指向该结构体数组第一个数组元素的指针.​​​​​​​

4、共用体

共用体又称为联合体,是由不同数据类型组成的一个整体.与结构体不同的是,共用体每次只能使用其中一个成员.结构体的总长度是结构体所有成员长度之和,共用体的总长度则是其中最长一个数据类型的长度,共用体的所有成员共享这一存储空间.通过使用共用体可以节省同时存在多种数据类型变量所需要的额外空间.

共用体变量的引用:引用方式与结构体变量相同.但是共用体一次只能使用一个成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值