读C和指针笔记(第一章).docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
读C和指针笔记(第一章)

1.11(空白和注释) 从逻辑上删除一段代码,更好的办法是使用#if指令。如: #if 0 Statements #endif 即使这段代码之间原先存在注释也无妨,所以这是一种更安全的方法。预处理指令的作用远比你想象的要大。 1.12(预处理指令) 预处理指令:由于预处理器(preprocessor)解释的。预处理器读入源代码,根据预处理指令对其进行修改,然后把修改过的源代码递交给编译器。预处理器用名叫stdio.h的库函数头文件的内容替换第一条#includestdio.h指令语句,其结果就仿佛是stdio.h的内容被逐字逐句写到原文件的那个位置。 参数被声明为const,这表示函数将不会修改函数调用者所传递的这个参数。 关键字void表示函数并不返回任何值,在其他语言里,这种无返回值的函数被称为过程 指针:指定一个存储于计算机内存中的值的地址。 int read_column_number(int columns[],int max );此类声明称为函数原型(function prototype) 1.13(main函数) 在C语言中,数组参数是以引用的形式进行传递,也就是传址调用,而标量和常量则是按值传递的。 在函数中对标量参数的任何修改都会在函数返回时丢失,因此,被调用函数无法修改调用函数以传值形式传递给它的参数。然而,当被调用函数修改数组参数的其中一个元素时,调用函数所传递的数组就会被实际地修改。 事实上,关于C函数的参数传递规则可以表述如下: 所有传递给函数的参数都是按值传递的。但是对以数组名为作为参数传递时,会产生引用传递的效果。如上所示,规则和现实之间似乎存在着矛盾,详见第八章 C语言不存在“string”数据类型,但在整个语言中,存在一定的约定:字符串就是一串以NUL字节结尾的字符。NUL是作为字符串终止符,他本身并不被看作是字符串的一部分。字符串常量就是被“ ”括起来的一串字符。(NUL是asc11字符集中‘\0’字符的名称,他他的字节模式为全0。NULL指一个其值为0的指针。他们都是整型值,其值也相同,所以他们可以互换使用。) printf函数接受多个参数,其中第一个参数是一个字符串,描述输出地格式。 %g:打印一个浮点值 %c:打印一个字符 %s:打印一个字符串 rearrange(output, input, n_ columns, columns);后三个参数是传递给函数的值, 一个参数则是函数将要创建并返回给main函数的答案。记住这种参数是唯一可以返回答案的方法,应为他是一个数组。 1.14 read_column_number函数 Scanf函数从标准输入读取字符并根据格式字符串对他进行转换-------类似于printf函数的逆操作。 Scanf函数的返回值是函数成功转换并存处于参数中的值的个数。 警告:对于scanf函数,你必须小心在意,理由有二。首先,由于scanf函数的实现原理,所有标量参数的前面必须加上一个””符号。关于这点,第八章再讲。数组参数前面不需要加“”符号。但是,数组参数中如果出现下标引用,也就是说实际参数是数组的某个特定元素,那么他的前面也必须加上“”符号,15章祥讲,解释在标量参数前加符号的必要性。现在只要求知道因为没有他们程序无法正确运行。 第二,学要注意的地方是格式代码。%c 格式码输入字符串时,中间不能包含空白。读取标量值和%c 值后面的空白表示该值得结束。 scanf(“%d”,columns[num])==1 即如果scanf函数转换了一个整数之后,他就会返还1这个值。 While(nummax scanf(“%d”,columns[num])==1columns[num]=0)大多数C编译器对数组下标未进行检查。因此,如果需要进行数组下表的有效检查就要自己编写代码。如果此处不进行nummax这个测试,而且程序所读取的文件包含超过规定的20个列标号,那么多出来的值就会存储在紧随数组之后的内存位置,这样就会破坏原先存储在这个位置的数据,程序可能不会按照你所预想的那样运行。 1.15rearrange函数 /* **处理输入行。将指定列的字符连接在一起,输出行以NUL结尾。 */ void rearrange(char *output, char const *input, int n_columns, int const columns[] ) { int col; int output_col; int len; len=strlen(input); output_col=0; /* **处理每对列标号 */ for (col=0; coln_columns; col+=2)

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档