C语言_第二讲_规范以及常用数据类型
一丶编码规范基本数据类型
编码规范
任何程序员,都应该有良好的的编码习惯,便于以后的代码可读性和维护
常见了编码规范有
匈牙利命名法
驼峰式大小写
匈牙利命名法:
是电脑程序设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法和匈牙利应用命名法。
匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。匈牙利命名法通过明确每个变量的数据类型来解决这个问题。
在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用途,紧跟着的就是程序员选择的任何名称。这个后半部分的首字母可以大写,以区别前面的类型指示字母(参见驼峰式大小写)。
例如: i_de f_fd db_d ch_c 第一个给定的信息可以很明确的直到是什么类型的.
便于代码的可读性
驼峰式大小写:
驼峰式大小写(Camel-Case,Camel Case,camel case),电脑程序编写时的一套命名规则(惯例)。
当变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函数的可读性。
例如: AddSum() SubValue BinarraySerach() 由此可以看出每个函数的作用
例如第一个 加一个数的总数 第二个减去值 第三个二进制数组查找.
拿到一个编辑器的时候
第一步:
讲他的Tab键设置为空格键替换,这样可以保证在任何平台下的代码都是一样看.
第二步:
编写代码的时候每句代码如果依赖上一层代码的关系,需要在首行加上缩进.
第三步:
讲编辑器设置线,可以保证代码不要超过,这样有助于代码的可读性
第四步:
编写源代码的时候上边要加注释 注释要求是:
要求(可以是项目要求,功能要求,做什么的说出来)
时间(你修改后的时间)
姓名(你什么时候修改的,加上时间,加上自己的姓名)
二丶Scanf函数的常见用法
Scanf(“%d,%d”,&a,&b);
对于scanf函数来说,在扫描输入的时候,你加什么,输入的分隔符号就要是什么
一般scanf默认都是空格或者回车是分隔符的.
Scanf函数中可以放正则表达式
常见的正则表达式有:
Scanf(“%[0-9]d”,&a);代表只能输入0-9,不对的不会输出
Scanf(“%a-z]d”,&a);代表只能输入a-z,不对的不会输出
Scanf(“%[^5]d”,&a);代表不能输入五,输入五不会扫描进去
scanf和 sscanf的区别
Scanf是从标准输入设备中扫描输入的
Sscanf是从标准输入中扫描输入到字符串当中的,他也可以用正则表达式.一般很常用.
三丶内存结构大体的简要
任何一个程序访问理论上是4G的内存
但是操作系统占高2g的内存此时这个内存是不可以读取和修改的,因为这块成为Ring3 也可以成为R0
除非你有操作系统的权限.
而低2g还不是程序可以直接访问的
还可以划分为 低64 和高64
这些是用户区用于和操作系统交互的缓冲区
现在剩下的内存还可以再分为
栈段
堆段
代码区
数据段
也就是咱们程序员常说的内存四区
而现在你的程序运行起来内存也不是都给你的,而是你需要多少我给你多少.
这样就保证了程序可以一下开2-30个了.
下面看看内存模型
四丶基本数据类型
C语言和同类型相比有很多的数据类型
其中__int64 的long类型是非标准类型,如果从商业化角度来看,微软就可以牢牢的把握住
这些人的平台,都是依赖自己的.因为非标准类型的代码,不可以移植的.
溢出和进位的区别
溢出:是针对有符号数据的描述,意思就是当数据到最大值的时候,如果在+1那么数据就会溢出有可能标称负数,恢复代价大.有可能不能恢复.
进位:
进位是针对无符号数据的描述,当数据超过这个数据的时候,那么就会产生进位.当前值还是有效的.可以通过一定的手段获得进位数据.
五丶字符和字符串
字符穿的存储和交互:
总共提出来2中概念
一种是:
C语言风格的,在字符后面以0结尾,代表是一个字符串.
另一种是Pascal风格
前几位(不确定,一般是2位)给定大小,后面存储大小一样的字符,形成一个字符串
他们的优缺点
C语言:
优点:灵活性比较高,特别是网络通信的时候,只要不是以0结尾,那么自己可以传输任意的字符.
缺点:缺点就是比较明显了,如果要找第N个字符,那么要一个一个的查找,
Pascal:
优点:
长度固定,访问N个的效率高,可以以跳板的形式访问
缺点:
缺乏灵活性,如果用于网络,那么传输完之后只能在传输新的,不能接着传输了.
而微软的是2中特性相结合
前表类型,后边以0结尾,(比较狡猾)这样做的好处是,兼容性更高,自家的产品卖得更好.
六丶字符和字符串的区别
‘a’ 和””a’’的区别
字符a是可以访问Ascii编码的
而字符串a则是引用的字符串的首地址
七丶标识符的规范
标识符的规范是:C语言中,定义标识符只能是数字字母下划线
其中数字不能开头
例如:
2ac 这样定义是不对的,这样的话分不清2是干什么的.
八丶C语言中的除法规则
规则式向0取整
3/2 = 1 数学中是1.5
而数学中有向上取整和向下取整的意思
就是1.5 如果向下取整,意思就是取不大于自己的最大整数 也就是2
向上取整就是取不小于自己的最大整数 也就是1
所以在C语言中右移符号使用时必须要判断商是否是负数
如果是负数那么因为规则式向0取整,那么就会出现错误.
1.5向0取整,就是舍弃小数0.5
九丶%号的原理
我们都知道%号的作用
8%3=2
-8%3=-2
8%-3=2
-8%-3=-2
算出来的结果和左操作数符号有关,左操作数是什么符号那么余数就是什么符号.
但是原理咱们不知道,
其实原理就是
A/b=q...r
A = q*b+r;
R = a-q*b;
代入值后发现
8/3=2..2
8 = 2*3+2
余数2 = 8-2*3
所以结果就是2
C语言_第二讲_规范以及常用数据类型的更多相关文章
- 第二讲_图像数据处理Image Data Processing
第二讲_图像数据处理Image Data Processing 深度模型出现后被弱化,但是思想的影子在深度模型中可以看到的 图片存储原理 RGB颜色空间:三通道(b,g,r),加法混色 CMY(K): ...
- JAVA基础语法:java编程规范和常用数据类型(转载)
JAVA基础语法:java编程规范和常用数据类型 摘要 本文主要介绍了最基本的java程序规则,和常用数据类型,其中侧重说了数组的一些操作. 面向java编程 java是纯面向对象语言,所有的程序都要 ...
- COM编程_第一讲_深入COM框架以及实现简单的COM
一丶我们要理解COM是什么(为什么理解) 现在很多人会用com(也就是ALT)但是不知道原理,如果改一点东西,那么整体的框架重来,因为你不懂改哪里,如果懂了,那么遇到问题,那么就会知道我要怎么做,是什 ...
- 深入理解java虚拟机_第二章_读书笔记
1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 ...
- Java编程思想_笔记_第二章_一切都是对象
第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...
- Python笔记_第二篇_面向过程_第二部分_1.函数
函数:这个词属于一个数学概念,在编程语言借鉴了这个概念,表现形式是一段程序代码的组合,也叫“程序集”.有过编程基础的人很容易理解这个概念,当我们编写程序越来越多的时候,程序设计大师们会把散乱的程序进行 ...
- java语言基础第二讲 课程作业02 总结
一.编程的好习惯 1.注释习惯.单行注释://, 多行注释:/* */ . 2.程序中添加适当的空白:4个空格. 3.文件名必须与公有类名一致,即public class 类名. 4.java中 ...
- 《Python编程从入门到实践》_第二章_变量和简单数据类型
什么是变量 举例: >>> message = "Hello,Python!" >>> print (message) Hello,Python ...
- Python笔记_第二篇_面向过程_第二部分_6.包
1. 包: 思考:如果不同人的编写模块同名了怎么办? 解决:为了解决模块命名的冲突,引入了按目录来组织模块的方法,这个目录成为“包” 特点:引入了包以后,只要丁顶层的包,不与其他人发生冲突,那么模块都 ...
随机推荐
- C# 串口接收数据中serialPort.close()死锁
最近在做一个有关高铁模拟仓显示系统的客户端程序,在这个程序中要运用串口serialPort传输数据,因为每次接收数据结束后要更新UI界面,所以就用到了的Invoke,将更新UI的程序代码封装到一个方法 ...
- TP框架中内置查询IP函数
系统内置了get_client_ip方法用于获取客户端的IP地址,使用示例: $ip = get_client_ip(); 如果要支持IP定位功能,需要使用扩展类库Org\Net\IpLocation ...
- JavaScript(五):函数(闭包,eval)
1.函数的申明:三种方法: function命令 函数表达式:变量赋值 Function构造函数 //method 1: function命令 function test(){ console.log ...
- eric6 中 designer 无法启动的解决办法
1.安装环境:win10+python3.6+Eric6 2.问题:使用 pip install PyQt5 安装 PyQt5.9 版本后,发现 Eric6 中无法打开 designer.exe 工具 ...
- python 抓取金融数据,pandas进行数据分析并可视化系列 (一)
终于盼来了不是前言部分的前言,相当于杂谈,算得上闲扯,我觉得很多东西都是在闲扯中感悟的,比如需求这东西,一个人只有跟自己沟通好了,总结出某些东西了,才能更好的和别人去聊,去说. 今天这篇写的是明白需求 ...
- KVM 虚拟机 安装配置
原创博文安装配置KVM http://www.cnblogs.com/elvi/p/7718574.htmlweb管理kvm http://www.cnblogs.com/elvi/p/7718582 ...
- 乘积最大洛谷p1018
题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...
- linux上安装php7 memcache扩展 和 安装服务端memcached
linux上安装memcached不算太困难.唯一让本人感到困难的是 php7的memcache扩展安装.真的蛋疼! 先说安装服务端 memcached 1. 首先安装Libevent事件触发管理器. ...
- python学习之路day1
学习总结: 变量,字符的由来,python2和python3的区别,控制语句:if,for,while,break,continue用法 学习示例: if用法1:判断年龄 # -*- coding: ...
- Python学习之--socket续集
IO多路复用: I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 一个很简单的linux例子,select,poll, ...