《POINTERS ON C》(基于ANSI C)知识点及附带问题(一)

 

 

1、在C语言中,//可以注释掉其之后的一行程序,而/* */可以注释掉其之间的程序,但是这种注释不允许嵌套,具有一定的局限性。还有一种方式可以在不影响想要注释掉的程序段里的注释的情况下而将代码注释掉。形式如下:

#if 0
  statements
#endif

 

在#if #endif之间的程序段可以被注释掉,而不管原程序段是否含有注释,当然,如果以后想让该程序段statements生效,只需要将0改为1即可。所有的注释都会被预处理器拿到,用空格取代(注释可以出现在任何空格可以出现的地方)。

 

2、在C语言中,数组参数是以引用形式进行传递的(传址调用),而标量和常量则是按值传递,被调用的函数无法修改调用函数以传值形式传递给其的参数。事实上,所有传递给函数的参数都是按值传递的。

 

3、C语言中并不存在“string”这种数据类型,但是存在一项约定:字符串就是一串以NUL(‘\0’)字符结尾的字符。NUL(‘\0’)作为字符终止符,并不是字符串的一部分。形如:

“hello world”(占据12个字节的空间,加上最后的NUL(‘\0’))

这种在源程序中被双引号括起来的一串字符,称为字符串常量。至于为什么选择以NUL作为终止符,是因为其并不是一个可以被打印的字符。

 

4、数组可以作为传入函数的参数,可以不指定数组的长度,因为无论调用函数的程序传递给它的数组参数的长度是多少,全都照收不误。这个特性可以允许单个函数操纵任意长度的一维数组。但是其缺点是显而易见的,即不知道数组的长度。

 

q1:C是一种自由形式的语言,也就是说并没有规则规定它的外观究竟怎么样。但是一般而言遵循一定的空白使用原则,你对此有什么看法?

a1:虽然C语言并没有严格的要求格式,但是为了程序更好的阅读和维护,约定俗成了一些空白使用原则。是可以接受的。

 

q2 :把声明放在头文件中,并在需要的时候用#include指令把它们包含于源文件中,这种做法有什么好处?

a2:声明只需要编写一次,这样以后维护和修改它的时候会更加容易。也消除了在多份拷贝中出现写法不一致的机会。

 

q3:使用#define指令给字面值常量取名有什么好处?

a3:为了以后修改的方便,由于已经取名,在以后需要修改常量的时候只需要在#define指令处修改一次,而不需要在源程序中多次修改。

 

q4:C语言并不执行数组下标的有效性检查。你觉得为什么这个明显的安全手段会从语言中省略?

a4:C的委员会为了强调C的灵活性,采用充分相信程序员的做法,让程序员去保证程序的正确性。

 

转载于:https://www.cnblogs.com/yu-tao/p/8399476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值