最近关于c语言学习的整理(数据篇)
2014-11-27 21:25
211 查看
本人是小白,高手看到了错误,如果愿意的话请提醒我下哦,新手学习中,需要各位大神的帮助。
今天开始着重学习c语言,首先是c语言的基础知识,很多人觉得无所谓,其实它很重要,贯穿你学习和使用的全过程。有的人觉得自己大概懂其实很多时候这一块不能略懂,就比如说定义float变量,它能表示的最大位数是7位,如果你在赋值时超过了这个位数,那么超过部分将会是乱码大家可以想象在精密计算中出现乱码,会出现多大的错误呢。
那么今天,就跟随我的步伐了解下c基础----数据的相关知识吧。
1、首先是基本数据类型
数据可分为整型、实型、字符型、枚举型和指针。
每种数据又可以分为多种类型,在这里一个注意点就是上文提到的其所占比特数,就是俗称的子长和取值范围不同。所以在使用时需要了解相关变量的长度,按需定义。再这里上图解释:
2、然后是关于变量和常量的定义
变量和常量其实是是对数据的使用分类。
在定义变量时,要根据变量的作用域来进行定义,分为局部变量和全局变量,从字面上不难理解是其对应的作用范围。具体的参照华清c语言设计基础教程60页相关内容,在定义时会到typedef关键字,具体的使用方法为:typedef数据类型
自定义数据类型,如typedef
int
unit32;之后unit32的作用就和int相当了,可以用unit32
a;来代替int
a;在开发中十分有用。
在定义常量时,用的是const来定义,有人会想到,既然是常量,那定以后如何赋值呢?那么这里就要进行如下两种方法定义:1)const
int a=10;。2)const
int
*a;或者
Int * const
a;。即利用直接定义或者利用指针获取的方式。
另外还可以用define来定义常量,不过define实际是一个预处理命令,用途远大于此哦。其实用它定义后,就是在预处理阶段就对一个常量进行了定义,然后贯穿整个程序的执行。
小提示:define语句不加分号(;)哦.
3、链接和存储模型
在程序编译后,如果相同的标识符出现在不同的源文件中那么他们是表示同一个变量就要取决于他的链接属性。可分为空链接、内部链接和外部链接。空链接和外部链接分别对应局部变量和全局变量。而内部链接则是使用static声明的全局变量,属于文件作用域,即在该文件的任何地方都可以使用,这就是内部链接,它的作用域取决于他的位置,比如若在函数外部,如:
Static intdo=3;
Int main()
{
}
就是属于静态全局变量。如果在主函数内部,则主函数和其调用的函数都是其作用域。
一个变量的存储则在于其声明。主要分为静态存储和动态存储。
如果就是普通的声明则为自动变量。如int a;它的实际意义是auto
int a;生成后一定是动态局部变量。
如果使用register声明则是寄存器存储类,它表示该变量可能会被频繁调用,但在使用它时,有几点注意点1)变量要能被寄存器接受,即必须是单个值,且必须小于或等于整型的长度2)这仅仅是个请求而不是命令,所以变量不一定会存放到寄存器。3)因为可能位于寄存器,所以不能&获取地址4)仅限于局部变量和形参,不能是全局变量。
另外的静态:空链接、外部链接、内部链接则是使用static声明的对应链接类型。只是把各种变量声明为了静态变量,再起作用域内不调用也不会消失。
当然,具体的心得需要各位自己在使用中了解哦。
再次声明,这些都是本人愚见,如果有大神发现错误,请多多指教,万分感谢!!
本人是小白,高手看到了错误,如果愿意的话请提醒我下哦,新手学习中,需要各位大神的帮助。
今天开始着重学习c语言,首先是c语言的基础知识,很多人觉得无所谓,其实它很重要,贯穿你学习和使用的全过程。有的人觉得自己大概懂其实很多时候这一块不能略懂,就比如说定义float变量,它能表示的最大位数是7位,如果你在赋值时超过了这个位数,那么超过部分将会是乱码大家可以想象在精密计算中出现乱码,会出现多大的错误呢。
那么今天,就跟随我的步伐了解下c基础----数据的相关知识吧。
1、首先是基本数据类型
数据可分为整型、实型、字符型、枚举型和指针。
每种数据又可以分为多种类型,在这里一个注意点就是上文提到的其所占比特数,就是俗称的子长和取值范围不同。所以在使用时需要了解相关变量的长度,按需定义。再这里上图解释:
2、然后是关于变量和常量的定义
变量和常量其实是是对数据的使用分类。
在定义变量时,要根据变量的作用域来进行定义,分为局部变量和全局变量,从字面上不难理解是其对应的作用范围。具体的参照华清c语言设计基础教程60页相关内容,在定义时会到typedef关键字,具体的使用方法为:typedef数据类型
自定义数据类型,如typedef
int
unit32;之后unit32的作用就和int相当了,可以用unit32
a;来代替int
a;在开发中十分有用。
在定义常量时,用的是const来定义,有人会想到,既然是常量,那定以后如何赋值呢?那么这里就要进行如下两种方法定义:1)const
int a=10;。2)const
int
*a;或者
Int * const
a;。即利用直接定义或者利用指针获取的方式。
另外还可以用define来定义常量,不过define实际是一个预处理命令,用途远大于此哦。其实用它定义后,就是在预处理阶段就对一个常量进行了定义,然后贯穿整个程序的执行。
小提示:define语句不加分号(;)哦.
3、链接和存储模型
在程序编译后,如果相同的标识符出现在不同的源文件中那么他们是表示同一个变量就要取决于他的链接属性。可分为空链接、内部链接和外部链接。空链接和外部链接分别对应局部变量和全局变量。而内部链接则是使用static声明的全局变量,属于文件作用域,即在该文件的任何地方都可以使用,这就是内部链接,它的作用域取决于他的位置,比如若在函数外部,如:
Static intdo=3;
Int main()
{
}
就是属于静态全局变量。如果在主函数内部,则主函数和其调用的函数都是其作用域。
一个变量的存储则在于其声明。主要分为静态存储和动态存储。
如果就是普通的声明则为自动变量。如int a;它的实际意义是auto
int a;生成后一定是动态局部变量。
如果使用register声明则是寄存器存储类,它表示该变量可能会被频繁调用,但在使用它时,有几点注意点1)变量要能被寄存器接受,即必须是单个值,且必须小于或等于整型的长度2)这仅仅是个请求而不是命令,所以变量不一定会存放到寄存器。3)因为可能位于寄存器,所以不能&获取地址4)仅限于局部变量和形参,不能是全局变量。
另外的静态:空链接、外部链接、内部链接则是使用static声明的对应链接类型。只是把各种变量声明为了静态变量,再起作用域内不调用也不会消失。
当然,具体的心得需要各位自己在使用中了解哦。
再次声明,这些都是本人愚见,如果有大神发现错误,请多多指教,万分感谢!!
相关文章推荐
- 最近在研究nutch,整理了一下关于读取资源数据的命令。
- 近期整理的关于数据存储和备份的一些资料
- 关于数据驱动和关键字驱动的理解整理
- 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理
- 关于数据格式化代码整理
- 关于云计算与大数据的真相(干货整理:资料+视频)
- 最近希望能够整理一下关于CVS的使用
- 《关于大数据的一些基本常识整理》
- 关于把A表中的数据复制到B表中(整理)
- 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理
- 关于pgsql 的json 和jsonb 的数据查询操作笔记整理
- 最近在整理一个关于计算机专业的介绍PPT
- 【整理】关于Access批量插入数据
- 最近研究大智慧帮客户研究关于DDX等数据实时这与文本
- 最近整理IOS开发关于scrollView的一些细节和技巧
- 最近整理了个js,解决了excel导入读取数据遇到的种种问题
- 回帖整理: 关于面向对象与数据操作的集合贴
- 整理最近新学到的几种sql写法(一)动态“循环”更新表内数据
- 最近一直在整理数据
- 关于android中数据持久化存储的方法的知识整理