一、数据类型的本质
数据类型可理解为创建变量的模具,是固定内存大小的别名。
数据类型的作用:编译器预算对象(变量)分配的内存空间。
数据类型的大小:sizeof
二、数据类型的使用
数组数组类型的使用,实验代码:
#include "stdio.h"
int main()
{
int a; //告诉编译器分配4个字节的内存
int b[10]; //告诉编译器分配40个字节的内存
printf("b:%d,b+1:%d,&b:%d,&b+1:%d\n",b,b+1,&b,&b+1);
system("pause");
return 0;
}
运行结果:
可以看出b,b+1只是相差4个字节,但是&b,&b+1相差40个字节。
因为b和&b代表的数据类型不一样,b代表数组首元素的地址,&b代表整个数组的地址。
三、定义数据类型
typedef关键字定义一个数据类型,比如定义一个结构体类型。
实验代码:
#include "stdio.h"
typedef struct student
{
int age;
char name[10];
}student;
int main()
{
student st;
st.age = 17;
printf("st.age:%d\n",st.age);
system("pause");
return 0;
}
四、数据类型的封装
1、void数据类型
void类型的字面意思是“无类型”,void*为“无类型指针”,void*可以指向任何类型的数据。
用法1:数据类型的封装
init_sock(void * handle);
用法2:void修饰函数返回值和参数,仅表示无。
如果函数没有返回值,那么应该声明函数类型为void。
如果函数没有参数,应该声明函数参数为void。
不存在void类型的变量,比如:
void a;
这样的变量是不存在的。
2、void指针的意义
C语言中规定只有相同类型的指针才可以相互赋值。
void*指针作为左值用于“接收”任意类型的指针,void*指针作为右值赋值给其他指针时需要强制类型转化。