C语言的数据类型及其对应变量.docxVIP

  • 2
  • 0
  • 约4.98千字
  • 约 9页
  • 2022-03-01 发布于浙江
  • 举报
PAGE PAGE 1 C语言的数据类型及其对应变量 指针 内存就是一排大小都是一by(te),且自己编号的抽屉。编号即抽屉的地址,里面的东西即抽屉的内容 指针即地址。即抽屉的编号 指针变量即存储标识符地址的变量,即存放了另一个抽屉编号的抽屉,对指针变量取值即得到标识符的地址,即指针的指向,对该变量取址即该变量本身存放的地址。当提及指针的时候,肯定要留意说的是一个指针常量(一个地址), 还是一个指针变量,这是国内的教材特别差劲的一个习惯 一个指针变量理论上可以存储任何标识符的地址,但是为了便于管理,C语言把指针变量也根据标识符的类型进行了划分。所以有了函数的指针,(字符)指针,数组指针etc. 但他们其实都一样,即虽然全部的抽屉的编号都是一张纸条,但某个抽屉只用来存储装了苹果的抽屉的编号,另一个抽屉只用来存储装了橘子的抽屉的编号。 定义并初始化一个指针变量,由于运算符优先级的问题,并没有固定的定义格式,基本上每种不同的标识符都有自己的指针定义格式 int* pVar= //数据类型指针变量char (*ptr)[3]={a,b,c}; //数组指针变量,本质是指针,指向一个数组 VS char* str[10]={this,is,a,string};指针数组,本质是数组,每个元素都是一个指针int (*(pFc)n)(int x)=fcn; //函数指针变量,指向一个函数的地址,函数名就是一个指针 使用指针 int var2=*pVar;//取值int** ppVar=*pVar;//取址,这里定义一个指向指针的指针变量 指针常量VS常量指针 指针常量const int* ptr表示不能通过指针修改指向的变量的内容 常量指针int* const ptr表示指针的指向不能转变。 基本数据类型char int etc. 基本数据类型是C语言规定好的数据类型,它们占据内存的大小,对该块内存的使用方式都是编译器规定好的,我们只能使用,不能更改。 在一个典型的32位操作系统中: 数据类型占位符长度数值范围(指数表示)数值范围(数字表示)char%c1-2^7~2^7-1-128~127unsigned char%c10~2^8-10~255short%hd2-2^15~2^15-1-32768~32767unsigned short%hu20~2^16-10~65535int%d4-2^31~2^31-1-2147483648~2147483647unsigned int%u40~2^32-10~4294967295long%ld4-2^31~2^31-1-2147483648~2147483647unsigned long%lu40~2^32-10~4294967295float%f或%g4??double%lf或%lg8?? Note: %f和%lf会保留小数点后多余的0(就算你写的5.2,也会输出5.200000),而%g和%lg不会保留哪些0 不同平台(eg:32位VS64位系统)数据类型的长度会有不同,详细需要用sizeof测,上表针对一般32位系统,以int为例,一个int占4byte,一个byte占8位,所以一个int由32位二进制表示,故int共能表示2^32个数 float和double的范围是由指数的位数来打算的。float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(指数位) 52bits(尾数位) So,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数打算了浮点数所能表达的肯定值最小的非零数;而正指数打算了浮点数所能表达的肯定值最大的数,也即打算了浮点数的取值范围。 float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38; double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308 有符号的数据类型不是分“正数” 和 “负数”,而是 “非负数” 和 “负数”,其中的区分在于 0 是非负数里的,所以,只需要记住有多少个和有无符号就可以计算其范围 基本数据类型与指针 int var=10;int* pVar = //定义并声明一个指向int类型变量的一个指针,并将其指向varint res=*pVar; //对一个指针取值int* pTest=pVar; 字

文档评论(0)

1亿VIP精品文档

相关文档