- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)
您可能关注的文档
- 论文翻译65069.doc
- 论文:浅谈矿用提升钢丝绳的维护与保养.doc
- 论材料的耐磨性及选材原则.pdf
- 论杨氏双缝干涉实验成果.doc
- 论某桥梁裂缝的原因分析与治理.pdf
- 论核磁共振全身弥散成像技术在临床诊断中应用优势-吴涛.pdf
- 论桥梁抗震的重要性.pdf
- 论泵送混凝土现浇楼板裂缝的防治.pdf
- 论碳纤维加固技术的工艺要点.pdf
- 论移印技术中的色彩匹配.doc
- 2025年成都市玩偶生产荧光涂鸦互动玩偶开发可行性研究报告.docx
- 2025年成都市海绵生产用于体育馆室外运动场地透水改造可行性研究报告.docx
- 2025年天津市体操鞋企业团建运动应用报告.docx
- 2025年上海市溶洞极限运动(速降)场地开发可行性研究报告.docx
- 2025年上海市涵洞工程施工技术应用可行性研究报告.docx
- 2025年上海市体育场馆设施扎带安全防护可行性研究报告.docx
- 2025年上海市牦牛育肥产业园区建设可行性研究报告.docx
- 2025年旅拍宠物陪伴拍摄项目可行性研究报告.docx
- 2025年上海市进口食品节庆主题快闪店可行性研究报告.docx
- 2025年上海市洗选厂尾矿综合利用产业化可行性研究报告.docx
文档评论(0)