typedef(起别名)
- 是c语言的一个关键字,作用是为一种数据类型(基本类型或自定义数据裂隙)定义一个新名字,不能创建新类型
- 与#define不同,typedef仅限于数据类型,而不能是表达式或具体的值
- #define发生在预处理,typedef发生在编译阶段
例:
typedef unsigned long long ull;
ull a=10;
例:
struct student
{
char name[20];
char sex;
};
typedef sturct student ss;
例:
typedef struct student
{
char name[20];
char sex;
}ss;
void数据类型
void字面意思是“无类型",void*无类型指针,无类型指针可以指向任意类型的数据
void定义变量是没有任何意义的,当你定义void a,编译器会报错,因为编译器不知道分配多少内存给变量
void真正用在以下两个方面:
1:对函数返回的限定;
2:对函数参数的限定;
任何指针的类型都可以转换成无类型指针,不用强转
sizeof操作符
sizeof是c语言中的一个操作符,类似于++、–等等,sizeof能够告诉我们编译器为某一个特定数据或者某一个类型的数据在内存中分配空间时分配的大小,大小以字节为单位。
sizeof(变量);
sizeof 变量;
sizeof(类型);
sizeof 注意点:
- sizeof返回的占用空间大小是为这个变量开辟的大小,而不只是它用到的空间。和现今住房的建筑面积和实用面积的概念差不多,所以对结构体用的时候,大多情况下就得考虑字节对齐的问题
- sizeof返回的数据结果类型是unsigned int;
- 要注意数组名和指针变量的区别。通常情况下,我没总觉得数组名和指针变量差不多,但是在用sizeof的时候差别很大,对数组名用sizeof返回的是整个数组的大小,而对指针变量进行操作的时候返回的则是指针变量本身所占得空间,在32位机的条件下一般都是4,而且当数组名作为函数参数时,在函数内部,形参也就是个指针,所以不再返回数组的大小。