C语言的数据类型小结

mac2024-08-14  66

1 “类型”是对数据的抽象

“类型”是对数据的抽象类型相同的数据有相同的表示形式、存储格式以及相关的操作程序中使用的所有数据都必定属于某一种数据类型

在C语言中的数据类型可以分为一下几类:

在C函数中数据类型是一个很重要的概念,所有的变量和常量都必须数据类型,而C语言的精华指针也是一种数据类型。那么数据类型的本质到底是什么,我们用int float double...这些数据类型来定义一些值又意味了什么?或者说 C/C++为什么会引入数据类型?

数据类型的本质

数据类型可理解为创建变量的模具(模子);是固定内存大小的别名,你在计算机中储存一个数值,必须要一个房间(内存),而这个房间肯定有大小,大户型,中户型,小户型,不同的户型可以存储不同大小的数值,但然大户型可以住小户型的数值,但是会造成浪费,毕竟咱们是共产主义接班人,按需分配。而小户型的人肯定无法住大数值(溢出)。数据类型的作用:编译器预算对象(变量)分配的内存空间大小 (户型大小,编译器就是土地管理部门)程序举例,如何求数据类型的大小sizeof(int )* sizeof函数就是判断一个数据类型需要多少内存来容纳。 #include <stdio.h> #include <stdlib.h> int main() { int a = 10; int b[10]; printf("int a:%d \n", sizeof(a)); printf("int a:%d \n", sizeof(int*)); printf("int b:%d \n", sizeof(b)); printf("int b:%d \n", sizeof(b[0])); printf("int b:%d \n", sizeof(*b)); printf("hello.....\n"); getchar(); return 0; }

数据类型的封装

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 万能类型)

2 变量的本质

概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。变量定义形式: 类型 标识符, 标识符, … , 标识符 ;

例如: 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变量之间的关系的? 内存四区模型:内存四区的概念

最新回复(0)