C和指针 学习笔记—第1-2章

本文是C和指针的学习笔记,涵盖了快速上手的技巧,如使用#if指令删除代码段,理解scanf的返回值,以及数组、指针和函数调用的交互。同时,探讨了基本概念,包括翻译和执行环境、编译过程、标识符长度限制以及程序执行流程。强调了数组参数传递的特性,字符串的NUL终止符,以及使用scanf和gets函数时应注意的事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C和指针这本经典著作,最近开始学习,然后想与大家共享下,希望共同进步!网络的力量是强大的,会碰撞出思想的火花来!

 

第一章 快速上手

1、要从逻辑上删除一段C代码,更好的办法是使用#if指令:

#if 0

statements

#endif

#if  和 #endif之间的程序段就可以有效地从程序中去除,即使这段代码之间原先存在注释也无妨

 

2、关于scanf返回值的问题

     scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。

scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF

 

3、当数组名作为实参时,传给函数的实际上是一个指向数组起始位置的指针,也就是数组在内存中的地址

 

4、为什么ch被声明为整型,但是又用来读取字符的原因?

例如:

int ch;

while( (ch = getchar()) != EOF &&  ch != '\n');

EOF是一个整型值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但同时,这也意味着接收字符的ch必须足够大,足以容纳EOF,这就是ch使用整型值的原因。尽管char类型变量的目的是为了让它们容纳字符型的值,但字符在本质上是小整型值 

 

5、数组做参数的时候是以引用的方式传递的,即地址传递。而标量和常量都是传值调用,被调用的函数无法修改调用函数以传值形式传递给它的参数,然而当被调用函数修改数组参数的其中一个元素时,调用函数所传递的数组就会被实际修改。

当数组名作为实参时,传给函数的实际上是一个指向数组起始位置的指针,也就是数组在内存中的地址。正因为实际传递的是一个指针而不是一份数组的拷贝,才使数组名作为参数时具备了传址调用的语义。函数可以按照操纵指针的方式来操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值