void counter(unsigned * val)
{
static unsigned count=0;
*val= ++count;
}
为什么unsigned
和val
之间有空格?不应仅仅*val
指向val
的内存地址吗?
答案 0 :(得分:6)
空间无关紧要。
它可能不止一个,或换行,甚至没有空格。
unsigned
*
val;
unsigned * val;
unsigned * val;
unsigned *val; // my preference
unsigned* val;
unsigned*val;
答案 1 :(得分:3)
不应该只是* val指向val的内存地址吗?
没必要。
你可以把它写成
unsigned * val
unsigned *val
unsigned* val
都是等价的 在编译器的lexical analysis阶段删除空格(换行符),因此任何数量的空格都不重要。
unsigned * val
答案 2 :(得分:1)
空间的位置无关紧要,但在声明一般变量时,可读性很重要:
unsigned * val, other_val;
unsigned *val, other_val;
unsigned* val, other_val;
在第一种情况下,特别是在最后一种情况下,other_val可能会被误解为指针;只有将*与变量绑定的第二种情况才能明显看出,只有val是指向unsigned的指针,而other_val是无符号的。
这不适用于函数参数的情况,因为每个参数都需要声明一个类型。