POINTERS ON C学习笔记
程序员文章站
2022-03-01 17:21:26
...
目录
第一章 快速上手
(1)数组参数是以引用(reference)形式进行传递的,也就是传址调用,而标量和常量则是按值(value)形式传递的,在函数中对标量参数的任何修改都会在函数返回时丢失,因此,被调用函数无法修改调用函数以传值形式传递给它的参数。
(2)在函数声明的数组参数中,并未指定数组长度。这个是正确的,可以使函数可以处理任何长度的一维数组,但是如果要知道数组的长度的话就必须将数组长度作为参数传递给函数。
int read_column_numbers(int columns[],int max)
{}
(3)当scanf函数对输入值进行转换时,它只读取需要读取的字符。这样,该输入行包含了最后一个值的剩余部分仍会留在那里,等待被读取。它可能只包含作为终止符的换行符,也可能包含其他数字。不论如何,while循环将读取并丢弃这些剩余的字符,防止他们被解释为第一行数据。
while((ch = getchar()) != EOF && ch != '\n')
;
(4)
int ch;
ch = getchar();
在这里ch被声明为int型,但是我们事实上却用它来读取字符。EOF是一个整形值,它的位数比字符类型要多,把ch声明为整形可以防止输入读取的字符意外地被解释为EOF,字符只是小整型数而已,所以用一个整型变量容纳字符值并不会引起任何问题。(如果输入中不再有任何字符,函数就会返回常量EOF)。
上一篇: Pointers