C语言复习巩固知识点_01_内存四区的理解&void *类型的指针占有多大的内存空间
数据类型的概念:
- 类型是对数据的抽象。
- 类型相同的数据有相同的表示形式、储存格式以及相关操作。
- 程序中使用的所有数据都必定属于某一种数据类型。
数据类型的本质:
- 数据类型其实就是创建变量的摸具;是固定大小内存块的别名。
- 数据类型的作用:编译器预算对象(变量)分配的内存空间大小。
程序举例,数据类型的大小。sizeof(数据类型) sizeof(int *);
测试用例:
printf("sizeof(int *)%d\n", sizeof(int *));
printf("sizeof(char *)%d\n", sizeof(char *));
printf("sizeof(void *)%d\n", sizeof(void *));
printf("sizeof(double *)%d\n", sizeof(double *));
运行结果:
结论:
在vs2017下,所显示的指针全部占有4个字节的内存空间。注:sizeof是操作符,不是函数;sizeof测量的实体大小由编译阶段就已经决定。
数据类型的封装:
- void是无类型,void*则为无类型的指针,void*可以指向任何类型的数据。
- 数据类型的封装:
- 不存在void类型的变量,C语言没有定义void 究竟是多大内存块的别名。
memcpy函数和memset函数void *memcpy(void *dest,const void *src,size_t len); void *memset(void *buffer,int c,size_t num);
总结:
- 数据类型本质是固定内存大小的别名;是个模具。C语言规定通过数据类型定义变量。
- sizeof操作符可以用来计算类型所占内存块的大小。
- typedef可以给已存在的类型起别名。
- void万能类型,数据结构链表哪里用的到。记一下~