C Primer Plus Chapter 2

Chapter 2 - Introducing C

synopsis

本章节作为introduction主要介绍了C语言的一些基本编程知识,同时用一个基本的printf例子逐行讲解了C语言的经典代码中各部分的作用与规范。另外本章还介绍了诸如printf的用法以及multiple function在编程中的写法,以帮助初学者很快地能够写出自己的第一个简单的C语言程序。

Anatomy of a C Program

C语言从非常专业的分类上来看,其基本组成框架如下
(img)
基本上所有的语句按照数据类型都可以分为 ++这里的我也还是一知半解,等涉及到这一部分了再回来补吧++

  • Keywords 关键词 int main
  • identifiers
  • operators 运算符
  • data 数据
    或者分为
  • declaration Ex: int i
  • assignment Ex: i = 1
  • function Ex: printf("This is a function\n")
  • control ++还不是特别懂这里++
  • null ++我也不是特别懂++

Some basic C rules

  • Comment //
    注释是提高程序可读性的一大功臣,一个优秀程序员写出来的code其中必然会在必要的地方加上各种注释,以方便理解与修改。
    // comment或是/* comment */
    这两者都可以用于书写C语言程序中的注释,前者更为优秀一些,这是因为前者更加简明,不容易在注释这一块引入语句错误(syntax error)。
  • 程序主体 {}
    大括号包裹着的为程序的主体结构block,这个以后会进一步详细讨论
  • %
    这个符号告诉了程序,接下来的地方将会出现一个十进制的int数值,以后会详细说。++好像是叫转义字符来着?++
  • include
    预处理header files,相当于将整个include的文件内容复制粘贴进了本程序,能够很好地协助程序调用函数,实现每个程序的个性化调用函数。
  • return
    在返回值不为void的程序中,必须要有return值,如果不打算利用函数的return值作进一步的计算处理的话,就可以直接return 0。++如果打算用的话则看情况而定++
  • int main(void)
    无论何时,main函数的名字都不能变,并且main函数一般是放在第一个展现在程序中的,子函数一般会跟在main函数中。
    关于main函数中的参数,括号中填void代表不需调用任何数值,照此填写是很好的编程习惯。int则代表main函数返回值为一个int,所以main程序的结尾一般都写上return 0,代表main函数返回了一个值为0的int。

Declaration

int i ; int i, j, k
在程序中,一般都要在程序的开头进行本程序中用到的各种变量的declaration,不进行declaration的变量是不能用的!另一方面,declaration也可以等到用之前再临时进行,但是个人觉得还是放在程序一开始比较好,因为这样的好处是:

  1. 让阅读你代码的人能够快速对你的程序中包含了什么有个基本了解
  2. 让你在正式开始写程序之前通过思索要用到哪些变量declaration来进一步提前设计一下程序

另外,在declaration的过程中其实就可以进行赋值assignment了。
同时可以看到,也可以在一行中进行多个同类型variable的declaration。

Assignment

assignment的基本格式为i = 1,这读作将1的值赋予i,也就是等号右边的值赋予左边。更多详细信息在后面会讲到

printf()*

这是这本书中第一次提到的可调用函数,也是整个编程中最简单和用途最广的一个程序。详见Fucnitons

escape sequence

\n为代表的escape sequence是编程中常用的一个概念,因为在编程中常要用到一些超越字母输入以外的操作,比如调整输入位置,改写编码位置等,这时候就要使用escape sequence了。

debug

程序出错分为两大类:语法错误语义错误,语法错误就是写的不合C语言规范,语义错误则是程序运行后与原设想不同。相比之下,语义错误更难处理。
想要debug,主要有以下几种方法:

  1. track program state假设自己是电脑一样,顺着代码一点一点读下来,然后边读边追踪电脑都在运行些什么,看看和自己编码时想的一不一样这样。
  2. printf method在一些程序运行的节点使用printf来展示一些variable的值,从而分析程序出问题的地方在哪里。
  3. use of degubber使用debugger这种专门用于debug的程序来帮助寻找bug所在。++Xcode里面也有,但是还没有试用过++

Multiple functions

在一个程序中,可以把某部分重复使用的代码单独编为一个函数然后在程序中调用使用,这样可以提高编码效率和形成模块化编程,降低代码维护的成本。
基本要求分为三部分:

  1. prototype
    位置在include等预处理部分,必须在main函数之前。格式就照抄function definition的开头一行就可以。`
  2. function call
    这是在main函数中调用子函数,其实就和调用其他程序一样。
  3. function definition
    这里是子函数的主体,包含了所有的子函数代码,一般放在main函数之后,格式为:
    ''#include<stdio.h>
    ''int Kotori(int kawaii); //prototype
    ''
    ''int main(void)
    ''{
    '' int cute = 19;
    '' cute = Kotori(cute); //function call
    '' printf("Minami Kotori is so cute as %d!\n", cute);
    ''
    '' return 0;
    ''}
    ''
    ''int Kotori(int kawaii) //function definition
    ''{
    '' int minami = 10;
    '' return kawaii + minami;
    ''}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,573评论 3 71
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,422评论 3 44
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • 1、c语言的函数有以下特点: (1)才源程序由函数组成,一个主函数main()+若干其他函数 C程序中的函数类似文...
    滕王阁序阅读 1,327评论 0 6
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,117评论 0 0