在C语言中的数据类型可以分为一下几类:
在C函数中数据类型是一个很重要的概念,所有的变量和常量都必须数据类型,而C语言的精华指针也是一种数据类型。那么数据类型的本质到底是什么,我们用int float double...这些数据类型来定义一些值又意味了什么?或者说 C/C++为什么会引入数据类型?
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
用法1:数据类型的封装 int InitHardEnv(void **handle);
典型的如内存操作函数memcpy和memset的函数原型分别为 void * memcpy(void *dest, const void *src, size_t len); void * memset ( void * buffer, int c, size_t num );
用法2: void修饰函数返回值和参数,仅表示无。如果函数没有返回值,那么应该将其声明为void型 如果函数没有参数,应该声明其参数为void int function(void) {return 1;}
void指针的意义
C语言规定只有相同类型的指针才可以相互赋值 void指针作为左值用于“接收”任意类型的指针 void指针作为右值赋值给其它指针时需要强制类型转换 int *p1 = NULL; char *p2 = (char *)malloc(sizoeof(char)*20);
5.不存在void类型的变量 C语言没有定义void究竟是多大内存的别名
数据类型总结与扩展:
数据类型本质是固定内存大小的别名;是个模具,c语言规定:通过数据类型定义变量。数据类型大小计算(sizeof)可以给已存在的数据类型起别名typedef数据类型封装概念(void 万能类型)例如: int x ; int wordCut , Radius , Height ; double FlightTime , Mileage , Speed ;
变量本质
程序通过变量来申请和命名内存空间 int a = 0通过变量名访问内存空间,(一段连续)内存空间的别名(是一个门牌号) 。修改变量有几种方法? 直接修改,通过系统的变量修改变量的值, 间接修改。内存有地址编号,拿到地址编号也可以修改内存;于是指针横空出世了!(编程案例) #include "stdlib.h" #include "stdio.h" int main() { int a = 0; a = 2; //直接修改变量 int* p = &a; //利用指针间接的指向变量的地址(取地址&) *p = 3; //间接修改指针的值 return 0; }3、内存空间可以再取给别名吗? 这点在C语言中可以通过指针的方法来进行取地址,间接赋值,在C++中,有了一种更为可读性的方法叫做引用来对一个变量进行取别名! 后期在谈论C++的引用语法时在进行谈论。 4 、数据类型和变量的关系------通过数据类型定义变量。 5、总结及思考题: 1 对内存,可读可写;2通过变量往内存读写数据;3 不是向变量读写数据,而是向变量所代表的内存空间中写数据。问:变量跑哪去了? 思考1:变量三要素(名称、大小、作用域),变量的生命周期? 思考2:C++编译器是如何管理函数1,函数2变量之间的关系的? 内存四区模型:内存四区的概念