江湖车侠|C和指针:如何快速上手C语言( 三 )


事实上,关于C函数的參数传递规则可以表述如下:
所有传递给函数的参数都是按值传递的 。
但是,当数组名作为参数时就会产生按引用传递的效果,如上所示 。 规则和现实行为之间似乎存在明显的矛盾之处,第8章会对此作出详细解释 。
江湖车侠|C和指针:如何快速上手C语言用于描述这段代码的注释看上去似乎有些多余 。 但是,如今软件开销的最大之处并非在于编写,而是在于维护 。 在修改一段代码时所遇到的第1个问题就是要搞清楚代码的功能 。 所以,如果你在代码中插入一些东西,能使其他人(或许就是你自己! )在以后更容易理解它,那就非常值得这样做 。 但是,要注意书写正确的注释,并且在你修改代码时要注意注释的更新 。 注释如果不正确那还不如没有!
这段代码包含了一个while循环 。 在C语言中, while循环的功能和它在其他语言中一样 。 它首先测试表达式的值,如果是假的(0)就跳过循环体 。 如果表达式的值是真的(非0) ,就执行循环体内的代码,然后再重新测试表达式的值 。
这个循环代表了这个程序的主要逻辑 。 简而言之,它表示:
江湖车侠|C和指针:如何快速上手C语言gets函数从标准输入读取一行文本并把它存储于作为参数传递给它的数组中 。 一行输入由一串字符组成,以一个换行符(newline)结尾 。 gets函数丢弃换行符,并在该行的末尾存储一个NUL字节(一个NUL字节是指字节模式为全0的字节,类似‘\0’这样的字符常量) 。 然后, gets函数返回一个非NULL值,表示该行已被成功读取 。 当gets函数被调用但事实上不存在输入行时,它就返回NULL值,表示它到达了输入的末尾(文件尾) 。
在C程序中,处理字符串是常见的任务之一 。 尽管C语言并不存在"string”数据类型,但在整个语言中存在一项约定:字符串就是一串以NUL字节结尾的字符 。 NUL是作为字符串终止符,它本身并不被看作是字符串的一部分 。 字符串常量(string literal)就是源程序中被双引号括起来的一串字符 。 例如,字符串常量:
“Hello”
在内存中占据6个字节的空间,按顺序分别是H、 e、l、l、o和NUL 。
printf函数执行格式化的输出 。 C语言的格式化输出比较简单,如果你是Modula或Pascal的用户,你肯定会对此感到愉快 。 printf函数接受多个参数,其中第一个参数是一个字符串,描述输出的格式,剩余的参数就是需要打印的值 。 格式常常以字符串常量的形式出现 。
格式字符串包含格式指定符(格式代码)以及一些普通字符 。 这些普通字符将按照原样逐字打印出来,但每个格式指定符将使后续参数的值按照它所指定的格式打印 。 表1.1列出了一些常用的格式指定符 。 如果数组input包含字符串Hi friend!,那么下面这条语句
江湖车侠|C和指针:如何快速上手C语言的打印结果是:
江湖车侠|C和指针:如何快速上手C语言后面以一个换行符终止 。
江湖车侠|C和指针:如何快速上手C语言表1.1 常用printf格式代码
例子程序接下来的一条语句调用rearrange函数 。 后面3个参数是传递给函数的值,第1个参数则是函数将要创建并返回给main函数的答案 。 记住,这种参数是唯一可以返回答案的方法,因为它是一个数组 。 最后一个print函数显示输入行重新整理后的结果 。


推荐阅读