August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
数组的名字代表了数组的所有元素。例如:
ch的大小(sizeof(ch))为100。然而,数组的名字可以转化(退化)为指针。例如:
p被初始化为&ch[0],而sizeof(p)可能为4之类的值(而非100)。
这一特性是十分有用的。例如,考虑函数strlen(),它能够统计一个以0结尾的字符数组中包含的字符总数:
我们可以调用strlen(ch),也可以调用strlen(&ch[0])。你可能认为这只不过是符号表示上的一个小小优点,对此我必须表示同意。
将数组名转化为指针的一个原因是避免意外地以传值方式传递大量数据。例如:
你可能会天真地(也是非常合理地)认为这个strlen()调用会拷贝参数所指向的100000个字符,但这并不会发生。取而代之的是,编译器会认为参数声明char ...