C语言中的数据类型

数据类型的本质,固定大小内存块的别名。

数组名代表数组首元素的地址。

数组首元素的地址,&代表整个数组的地址。

数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类型和数组指针类型的关系,很重要的。

可以使用sizeof求数据类型的大小。sizeof测量变量的大小在编译期就已经完成。

可以通过typedef自定义数据类型。

数据类型的封转

1、void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何数据类型的指针。

2、void修饰的函数返回值和参数,表示是无,如果函数没有返回值,应该将函数声明为void类型,如果函数没有参数,应该将函数括号中用void来明确表示。

3、void指针的含义,C语言规定,只有同种类型的指针才能进行赋值,void* 作为左值的时候,可以接收任何类型的指针,void* 作为右值的时候,需要进行强制类型转换。

4、不存在void类型的变量,在C语言中,没有定义void应该分配多大的内存。

变量的三要素,名称,大小,作用域

函数的三要素,名称,参数,返回值

数据类型的思考

如何表达数组的数据类型?

函数可以看作是一种数据类型? 函数也是一种数据类型,是一种特殊的数据类型。

变量的本质,是既能读又能写的内存对象,若初始化之后不能修改的量称之为常量。

变量的本质是一段连续内存空间的别名,是一个门牌号,通过变量来操作内存,对内存可读可写,通过变量往内存中读写数据。那么变量跑哪里去了?变量在代码区中。

程序通过变量名来操作变量直行的内存空间。

通过变量修改内存的方法有两中,一种是直接进行修改内存,另外一种是间接修改内存。

如果想要间接修改内存中的值,应该那到这个内存的地址,然后强制转换成为对应类型的指针的地址,然后在通过*来操作这块内存。

也就是说,内存是有地址编号的,拿到了这个地址编号就可以修改内存中的数据了。

内存空间可以多取几个别名,C++引用就是干这个事情的。

也就是说,对类型可以区别名,通过typedef,对内存空间也可以取别名,就是C++中的引用。

变量的生命周期,涉及到内存四区模型和函数调用模型。

*就像一把钥匙,拿着这个钥匙找到对应的内存空间,修改或者是得到内存空间中的值。

C语言中数据类型和变量的更多相关文章

  1. C语言中数据类型的取值范围

    C语言中数据类型的取值范围如下:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 ...

  2. C语言中数据类型的本质

    数据类型可以理解为固定内存大小的别名.比如int类型,就是表示占用4字节的内存. 1 数据类型的大小 用sizeof操作符获得数据类型的大小. 比如 int a[5];   sizeof(a)就可以得 ...

  3. C语言中数据类型取值范围的计算的理解与总结

    c语言中,数据类型有short,int,long,char,float,double,然后除了浮点型只有 有符号数(signed)外,其他的数据类型都分为有符号(signed)和无符号(unsigne ...

  4. 从头开始-03.C语言中数据类型

    基本数据类型 整形: Int 4字节 %d / %i Short 2字节 %hd Long 8字节 %ld Longlong 8字节 %lld Unsigned 4字节 % 浮点型 单精度 Float ...

  5. C语言中的特殊变量

    auto: 函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间. register: 为了提高效率,C语言允许 ...

  6. C语言中结构体变量之间赋值

    近期,我阅读了某新员工小刘写的C语言代码,发现其对结构体变量之间的赋值不是非常熟悉. 对于两个同样类型的结构体变量,他均採用的是逐个成员变量直接赋值的形式.例如以下的代码演示样例: 如上代码所看到的, ...

  7. c语言中的数据变量类型,大小

    C中有哪些数据类型? 回答: 有两种类型的数据类型,用户定义和预定义.预定义的数据类型是int,char,float,double等,用户使用标签struct,union或enum创建用户定义的数据类 ...

  8. 16.C语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法。

    数据类型决定长度的含义:我们一个内存地址(0x30000000),本来这个地址只代表1个字节的长度,但是实际上我们可以通过给他一个类型(int),让他有了长度(4),这样这个代表内存地址的数字(0x3 ...

  9. C语言与java语言中数据类型的差别总结

    在学习java的时候,看到char ch =  '男' ; 我就觉得很奇怪,char类型不是占用一个字节吗?为什么定义成一个汉字被说成是一个字符了? 原来,在C语言中,char在32位操作系统下占用1 ...

随机推荐

  1. JSF教程(8)——生命周期之Apply Request Values Phase

    当一个组件树在一个postbacks请求中被恢复之后其中每一个组件从request的參数中取得各自的值,这里使用的是processDecodes方法. 这个值会保存在本地的每一个组件中,在源代码中此过 ...

  2. 深入了解Struts1的执行机理

    要说Struts1的工作流程.就必需要说一下Model1和Model2了.由于这个框架是踏着他们的尸骨一步一步的发展起来的. Model1开发模式,想想我们刚刚開始接触Java的时候,我们用的就是这样 ...

  3. CSU - 1556 Jerry's trouble(高速幂取模)

    [题目链接]:click here [题目大意]:计算x1^m+x2^m+..xn^m(1<=x1<=n)( 1 <= n < 1 000 000, 1 <= m < ...

  4. Java 9 模块解耦的设计策略

    1. 概述 Java 平台模块系统 (Java Platform Module System,JPMS)提供了更强的封装.更可靠且更好的关注点分离. 但所有的这些方便的功能都需要付出代价.由于模块化的 ...

  5. zabbix-agent active 配置自动探测

    1. zabbix-agent 被动模式配置文件: PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_a ...

  6. JS加水印遮罩

    <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC & ...

  7. C#的类型列表

    以下是 C# 内建类型的列表: 类型 字节 描述 unsigned byte signed byte signed short unsigned short signed integer unsign ...

  8. matlab 学习之常用函数2

    -----------------------------author:midu ---------------------------qq:1327706646 ------------------ ...

  9. IOS --支付宝SDK 分解讲解

    开发在手机端的时候(客户端),我们主要负责客户端(手机端)的开发,所以那些繁琐的到支付宝官网填写商户信息可以留给后台去弄,后台只要把: 1回调地址, 2app的ID, 3商户的私钥(privateKe ...

  10. ADAS

    1 什么是ADAS advanced driver assistance system,即高级驾驶员辅助系统.是基于车上各种传感器的应用,如摄像头.雷达.激光器等. 2 ADAS的构成部分 2.1 a ...