*在函数args(C)中

时间:2014-03-29 13:32:18

标签: c

void counter(unsigned * val)
{
    static unsigned count=0;
    *val= ++count;
}

为什么unsignedval之间有空格?不应仅仅*val指向val的内存地址吗?

3 个答案:

答案 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是无符号的。

这不适用于函数参数的情况,因为每个参数都需要声明一个类型。