李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

时间:2021-06-02 09:31:28

上一讲中已经创建了第一个C语言程序,知道了C程序是由函数构成的,这讲继续学习C语言的一些基本语法。C语言属于一门高级语言,其实,所有的高级语言的基本语法组成部分都是一样的,只是表现形式不太一样。就好像亚洲人和非洲人,大家都有人类的结构:2只手、2只脚、1个头,只是他们外表不太一样,比如肤色、脸型。因此,你掌握好了一门高级语言,再去学习其他高级语言,那是相当快的。而且,很多其他高级语言,比如后面要学习的Objective-C,都是基于C语言、从C语言衍生出来的,好好学习C语言吧,绝对不吃亏。

一、关键字

1.什么是关键字

关键字就是C语言提供的有特殊含义的符号,有些地方也叫做“保留字”。

2.一共有哪些关键字

C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义。

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
auto double int struct break else long switch

case enum register typedef char extern return union

const float short unsigned continue for signed void

default goto sizeof volatile do if while static
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

大致浏览一遍即可,不用去百度每个关键字的作用,这些关键字以后会经常用到的,到时候你想不记住都难。

3.如何辨别关键字

这些关键字会经常跟其他符号混在一起使用,一个程序里面这么多英文符号,我怎么知道那些是关键字呢?关键字有2大特征:

1> 全部都是小写

2> 在开发工具或者智能文本编辑工具(比如UltraEdit)中会显示特殊颜色

比如下面这段C程序在UltraEdit中呈现的样子

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

在这段代码中,只有int和return是关键字,C语言中的所有关键字在UltraEdit中都会显示蓝色!可以看出,main并不是关键字。至于int和return究竟有什么特殊含义,这里先不做讨论,后面会详细介绍。

二、标识符

1.什么是标识符

标识符就是在程序中自定义的一些符号和名称。要跟关键字区分开来:关键字是C语言默认提供的符号,标识符是程序员自定义的。

2.标识符的作用

1> 标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来。其实,标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字。

2> 上一篇说到:C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称。函数的名称就是标识符的一种。除了函数,以后还会学到“变量”这个概念,变量的名称也是标识符。

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

因此,上面的代码中:int和return是关键字,main是标识符

3.标识符命名规则

标识符是由程序员自定义的,但是不能随便命名,它有以下几点命名规则:

1> 只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成。

下面的标识符都是正确的:

test1    Mike2jack   My_tExt  

下面的标识符都是错误的:

test!32   haha(da)tt   哈哈_text

2> 严格区分大小写,同一段英文字母的大写和小写是两个不同的标识符。

比如:main和Main是两个不同的标识符

3> 不能以数字开头。

下面的标识符都是错误的:

123haha  78text  98111

4> 不可以使用关键字作为标识符。

下面的函数是错误的:

1 int int()
2 {
3 return 0;
4 }

函数的名称是标识符的一种,而第1行的函数名称叫做int,int是C语言中的关键字,这是不合法的,肯定会报语法错误。

4.标识符命名规范

这个命名规范,你不一定要遵守。不过呢,90%的优秀程序员都是按照这个规范去走的。

1> 尽量起个有意义的名称,比如一个完整的英文单词,别人一看这个名称就能才能这个标识符的作用。如果不懂英文,你也可以用拼音,尽量不要起像abcde、sfsdfsdf等这类看起来没有意义的名称

2> 如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name

三、注释

1.什么是注释

  • 注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解、解释的意思。
  • 注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流。假如我写完一行代码后,加上相应的注释,那么别人看到这个注释就知道我的这行代码是做什么用的。
  • 注释可以是任何文字,也就是说可以写中文。

注意:直接在代码中写上一大段中文是不行的,编译器会报错

1 这是一个主函数,C程序的入口点
2 int main()
3 {
4 return 0;
5 }

第1行写了一段中文,用来解释main函数的作用,但是这段代码是不能编译成功的。第1行的中文并不叫注释,注释有它特定的格式。

2.注释的种类

C语言中一共有2种注释:单行注释、多行注释。大部分高级语言都有这2种注释。

1> 单行注释

单行注释以两个正斜杠开头,也就是以//开头,只能注释一行,从//开始到这行的结尾都是注释的内容

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 #include <stdio.h>
2
3 // 这是一个主函数,C程序的入口点
4 int main()
5 {
6 // 这句代码可以在屏幕输出Hello World这一串文字
7 printf("Hello World");
8 return 0;
9 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

第3行、第6行都是注释,注释在开发工具中一般都是绿色的。可以看出,这里第3行的注释是用来解释第4行代码的,第6行的注释是用来解释第7行代码的。一般就是这样写单行注释,用来解释某一行代码的作用。

注释也可以写在某条语句的后面

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 #include <stdio.h>
2
3 // 这是一个主函数,C程序的入口点
4 int main()
5 {
6 printf("Hello World"); // 这句代码可以在屏幕输出Hello World这一串文字
7 return 0;
8 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

第6行分号;后面的绿色文字都是注释。

如果将//放到printf的前面,那么整个第6行都属于注释。

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 #include <stdio.h>
2
3 // 这是一个主函数,C程序的入口点
4 int main()
5 {
6 // printf("Hello World"); 这句代码可以在屏幕输出Hello World这一串文字
7 return 0;
8 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

你会发现整个第6行都变成了绿色,说明整个第6行都是注释。

2> 多行注释

//只能用来注释一行文字,如果有多行文字都需要注释,那么就可以用多行注释。多行注释以/*开头,以*/结尾,/*和*/中间的内容都是注释。

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 /*
2 作者:MJ
3 描述:第一个C语言程序
4 作用:这是一个主函数,C程序的入口点
5 */
6 int main()
7 {
8 return 0;
9 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

第1行到第5行的内容都是注释

3.注释的嵌套

1> 单行注释可以嵌套单行注释、多行注释

1 // 哇哈哈 // 呵呵呵
2
3 // /* fsdfsdf */ // sdfsdfsd

这2行的所有内容都是注释

2> 多行注释可以嵌套单行注释

1 /*
2 // 作者:MJ
3 // 描述:第一个C语言程序
4 作用:这是一个主函数,C程序的入口点
5 */

这几行的所有内容都是注释

3> 多行注释不能嵌套多行注释

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 /* 哈哈哈
2
3 /*
4 嘻嘻嘻
5 */
6
7 呵呵呵 */
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

你会发现只有第1到第5行才是注释,第7行并不属于注释。因为/*找到第一个*/后就算注释结束了,而第1个*/在第5行。

4> 下面的写法是错误的

1 // /*
2 哈哈哈
3 */

只有第1行是注释,第2~3行都不是注释

4.注释的细节

1> 注释是写给人看的,不是给计算机看的。计算机怎么可能看得我们写的中文嘛。因此,当编译程序的时候,并不会将注释编译到目标文件中。

换句话说:被注释掉的语句是不会被执行的。

1 int main()
2 {
3 // printf("Hello");
4 return 0;
5 }

第3行的语句被注释掉了,因此,运行程序的时候,并不会执行第3行的语句,屏幕上没有任何输出。

2> 要养成写注释的良好习惯。绝大部分项目经理检查下属代码的第一件事就是看有没有写注释,也有很多公司的机试也会检查注释(机试就是给你一道编程题、一台电脑,在规定时间内解题)。

3> 为什么注释这么重要呢?

  • 今天,你写了几百行代码,很高兴,做出了一个非常不错的功能,但是,忘了写注释。一个星期过后,你再回去看那一段代码,你可能完全看不懂了,这是很正常的事。如果你写了注释,那情况就不一样了,注释可以帮助你回顾代码的作用。
  • 你在某家公司待了1年多,写了10几万行代码,但是你不写一点注释。有一天你离职了,新的员工接手你做的项目,他首先要做的事情肯定是要读懂你写的代码。可是你一点注释都没写,10万行代码,全部都是英文,这会让这位新员工非常地蛋疼。每个人都有自己的思想,写代码的思路肯定是不一样的,看别人写的代码是件非常痛苦的事情,特别是没有注释的代码。你不写注释的做法会大大降低公司的开发效率。因此,所有的正规公司都非常重视注释。

5.注释的隐藏功能

1> 排错

其实,如果你利用得当的话,注释不仅仅是可以用来解释程序,还可以用来排除错误。

比如下面的代码

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("111\n");
6 printf("222\n")
7 printf("333\n");
8 return 0;
9 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

编译程序,你会发现编译失败。这个时候你可以将比较可疑的代码给注释了,比如注释第6行,因为感觉第6行好像少了点什么东西

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("111\n");
6 // printf("222\n")
7 printf("333\n");
8 return 0;
9 }
李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释

再编译一遍,发现编译成功了。说明就是第6行代码出错了!!!

2> 检查代码的作用

在工作中,偶尔会遇到自己不会做的功能,这时候我们就要去网上找一些别人写好的代码来填补自己的项目。但是别人写的代码不可能完全符合我们的需求啊,于是需要裁剪部分有用的代码出来,怎么知道哪一部分是有用的代码呢?那么你就要搞清楚每一行代码的作用。这个时候,我们利用注释来弄清楚每一行代码的作用。

比如,下面这段程序,我想知道第3行代码的作用

1 int main()
2 {
3 printf("Hello");
4 return 0;
5 }

这个时候你可以先把程序运行一遍,看看运行效果,运行效果就是:在屏幕上输出了Hello这一串内容。

接着你把第3行代码注释了

1 int main()
2 {
3 // printf("Hello");
4 return 0;
5 }

然后再运行一遍程序,发现屏幕上并没有输出以前的Hello。说明第3行代码的作用就是:在屏幕上输出了Hello这一串内容!!!总结来说,就是把注释后跟注释前的运行效果做一个对比,看看有没有少了什么效果,如果少了某些效果,说明被注释代码的作用就是实现这个少掉的效果。这句话可能有点绕,好好体会一下,对你大有帮助!

李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释的更多相关文章

  1. 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述

    前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...

  2. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  3. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  4. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  5. 零基础学习iOS开发

    零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...

  6. &lbrack;iOS&rsqb;关于零基础学习iOS开发的学习方法总结

    关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...

  7. MongoDB实战开发 【零基础学习,附完整Asp&period;net示例】

    MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...

  8. 零基础学习hadoop开发所必须具体的三个基础知识

    大数据hadoop无疑是当前互联网领域受关注热度最高的词之一,大数据技术的应用正在潜移默化中对我们的生活和工作产生巨大的改变.这种改变给我们的感觉是“水到渠成”,更为让人惊叹的是大数据已经仅仅是互联网 ...

  9. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备

    在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不 ...

随机推荐

  1. HTML CSS 特殊字符表(转载)

    转载地址:http://blog.csdn.net/bluestarf/article/details/40652011 转载原文地址:http://zhengmifan.com/news/noteb ...

  2. Xutils简

    //解析 private void myinitData() { RequestParams parms=new RequestParams("http://huixinguiyu.cn/A ...

  3. VMWare共有3种网络连接模式

     VMWare共有3种网络连接模式,分别是: 1. bridged(桥接模式):虚拟机将直接连接到物理局域网,使自身独立于宿主机外,从局域网路由器获取IP.这种方式虚拟OS可以和局域网中其他终端实现互 ...

  4. Java NIO系列教程(六) Selector

    Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 下面是 ...

  5. how to build jdk 9 source code

    http://hg.openjdk.java.net/build-infra/jdk9/raw-file/tip/README-builds.html#vs2013 http://royvanrijn ...

  6. 【ARM】ARM程序规范

    1.函数名单词之间用_隔开,每一个字母大写      Uart_Printf()    //这个由三星的TEST风格延续下来,因此没有参数时,必须加void,否则ADS会编译报警    void Te ...

  7. HTML &lt&semi;img&gt&semi; 标签的 alt 属性

    定义和用法 alt 属性是一个必需的属性,它规定在图像无法显示时的替代文本. 假设由于下列原因用户无法查看图像,alt 属性可以为图像提供替代的信息: 网速太慢 src 属性中的错误 浏览器禁用图像 ...

  8. &lbrack;USACO09MAR&rsqb;Cow Frisbee Team

    嘟嘟嘟 这个是一个很明显的dp,遇到这种倍数的问题的,就令dp[i][j]表示选到了第 i 只牛(不是选了 i 只牛),sum(Ri) % f == j 的方案数,则, dp[i][j] = dp[i ...

  9. ZOJ2112 Dynamic Rankings&lpar;整体二分&rpar;

    今天学习了一个奇技淫巧--整体二分.关于整体二分的一些理论性的东西,可以参见XRH的<浅谈数据结构题的几个非经典解法>.然后下面是一些个人的心得体会吧,写下来希望加深一下自己的理解,或者如 ...

  10. hdu 4786&lpar;生成树&rpar;

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...