一、C代码规范和基础结构(写在所有技术文案前面)

本人以前整理给一个哥们的入门教程。

(1)C语言标准有一套命名规范,程序员对变量或者函数命名必须遵循这种命名规则,必须是字母、数字和下划线三种字符组成,而且只能是以字母或下划线位命名开头。而且名字长度一般不能超过256位!因为有些编译器规定的名字长度限制为256位。

 

一般C语言中定义有一些关键字,这些关键字其实就是C语言标准库里已经被使用过的名字,程序员使用的名字不能和其相冲突。如printf为C语言标准的的标准打印函数,程序员不能再声明定义一个名称是printf的变量或者函数。

 

(2)每个程序员都会有自己的一套命名习惯,命名习惯的好坏决定了程序的可读性,若是程序里的变量名乱七八糟,又臭又长,或许别人看都不想看了。所以一个号的命名习惯有助于编程素养的提高。

 

虽说每个程序员都会有自己的命名习惯,但好的习惯一般都会遵循一个规则,也就是命名和其使用意义相结合的命名习惯。如【int length = 0;】这里“闻名知义”,len名字一看起来就让人有点明白,是即将用来存储一个长度的变量。【int strLength = 0;】这里,strLength名字一看也有点明白,是即将用来存储一个字符串长度的变量(str表示字符串string缩写)。

 

另外,若变量名的实用意义有多个,而定义的变量名需要几个词语组合,那么一般使用的命名习惯是驼峰方式,如要定义一个存储广州白云区人口总数的变量:【unsigned long guangZhouBaiYunTotalPerson = 0;】很明显,闻名知义,是存储广州白云人口总数的变量。

另一种命名习惯是间隔方式,如【unsigned long guangzhou_baiyun_person_count = 0;】也是很明显地知道这个变量的意义。

或许是两种结合,而且嫌弃前面两种方式所定义的变量名长度太长,挺难看的,所以需要进行名字的缩写,如【unsigned long GZ_BY_PersonSize = 0;】一般通过上下文,知道程序员在写关于广州某个区某个地址的程序,都会明白GZ是广州的意思,BY对号入座,白云,即白云区,PersonSize显然是人的数量。

 

(3)当一个变量作为全局变量时候,我们可以在变量前加上'g_'、'global_'或者'G_'、'Global_'这些显而易见的字符,如【unsigned long g_WinWidth = 0;】很明显看出是个全局的窗口宽度变量。

 

当一个变量作为局部变量时候,作为函数的临时变量时候,可以在变量前面加上'local_'这些前缀字符,用来清晰表达变量的存在意义。如【int local_flag = 1; int localFlag = 0;】表示临时标识的变量。

 

当一个变量作为结构体struct或联合体union的一个成员变量时候,我们可以在变量面前加上'm'、'm_'或者'_'、's_'等等比较独特的前缀,如【int mCount; int m_Count; int m_student;int _size; int s_sell;】这些很明显,变量的意义和名字已经结合在一起了,看到名字就能知道其大概含义。

 

(4)C语言发展从1972年在美国贝尔实验室设计出来,到1978年和unix系统一起推广,并且于1994年ISO组织接受了ANSI美国国家标准学会定制了第一套标准,而定制了一套国际化C语言标准。至今,运用比较广泛的还是1999年ANSI在89年定制的标准基础上定制的C语言标准,简称为‘c99’,而在99年之后的2011年12月ANSI又在c99的基础上定制了新的C语言标准,也就是现行最新的标准,简称‘c11’。

另外,一些古老的编译器依旧支持一些很古老的标准,如c89,有些编译器不支持古老的标准了。

虽说定制标准的是ISO国际标准化组织,其定制的C语言标准简称为‘ISO C’,而现在使用最广泛的却是ANSI定制的C语言标准,又称为‘ANSI C’。

 

若是支持标准c程序库,则必定定义了【#define __STDC__】。

 

(5)要使用标准c程序库,都需要在所有程序前加上【#include<stdio.h>】头文件。

 

头文件的作用,本质上其实是为了简短一个文件里程序的长度,在计算机发展初期,一个文件的大小其实是有限的,在没有头文件机制出现时候,程序的长度很有限,在有限的程序长度里,一个游戏,一个程序甚至是一个操作系统,代码也就一个文件,代码显得很拥挤,杂乱无章。

在编译时候,编译器会自动把头文件的所有代码都拷贝到当前#inclue的语句的地方,当做是一个程序块,嵌入到#include语句所在的那一行。

 

(6)单行注释使用‘//’,表示从//起的后面一行都是注释。

多行注释从"/*"开始,"*/"结束,中间不管有多少行,都是注释。

注释是表示编译器忽略的代码,不会被编译器检测到,不论写多少行注释,都对程序没有任何影响。

 

(6)基本的输入输出函数printf和scanf

printf是打印,scanf是从键盘输入,都是需要进行IO操作,计算机里的IO操作还是很慢的,所以一般没必要,除了调试程序之外,没必要使用到IO操作。

 

 

stdbool.h头文件中定义了布尔型的数值true和false.

要用到tru或者false的话,就需要包含该头文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值