C语言进阶一
1.数据类型
基本数据类型和复合类型
1.1基本数据类型
char,int ,long,short ,float,double
1.1.1内存占用和sizeof运算符
数组类型好像一个一个的模子,这个模子实例化处C语言的变量,变量存储在内存中,需要占用一定的内存空间。(定义的变量越少,消耗的内存越少),一个变量占用多少空间由数据类型决定的。每一种数据类型在不同的机器平台上占用的内存是不一样的,一般来讲的时候以32位的cpu来讲的
int a; //4
long a;//4
short a;//2
float a;//4
double a;//8
char a;//1个字节
1.1.2 有符号数和无符号数
以下类型分为有符号数和无符号数
char
int
long
short
以下类型只有符号数
float
double
对于C语言来说,数(也就是变量)是存储在内存中的一个一个的格子中。存储的时候用二进制存储,对于由符号数和无符号数存储方式不同。比如int来说 unsigend int ,32个字节全部可以来存储内容,所以表示数的范围是0 - 4294967295(2^32 -1)
对于signed int ,有符号数,32位中最高位来存符号,剩余31位来存储数据 -(2^31 ) 到 +(2^31-1)
类型怎么定义就怎么取,int 编译和float编译形式不一样
1.1.3 整型数和浮点型数存储方式不同
复合类型
数组,结构体,公用体,类(c语言没有类,c++)
1.2 空类型
void
C语言的void类型,代表任意类型,而不是空类型。任意类型的意思不是说想变成谁变成谁,而是说它的类型是未知的,还没有指定
void * 代表空类型指针,void类型指针的含义是,这是一个指针变量,该变量指向一个void类型的数,void类型的数就是说这个数可能是int,也可能是float,也可能是结构体,哪种类型都有可能,只是我不知道
void程序编译器没办法帮你做编译检查
在函数的参数列表和返回值中,void的含义是:
作为一个函数参数列表的void,表示这个函数调用时不用给它传参
发返回值类型是void,表示这个函数不会返回一个有意思的返回值。所以调用者不用想着使用该返回值
注意:void * 类型的指针,可以指向任意类型的变量,但是程序员必须自己清楚,存放时合取时数的类型必须相等,否则会报错
eg
#include main(void){
int a=23;
void * pVoid = &a;
printf("*pVoid = %d",* (int * ) pVoid);
}
1.3 数据类型转换
1.3.1 隐私类型转换
1.3.2 强制类型转换
1.4语言和bool类型