C中的星号空间 - 额外的空白是什么意思?

时间:2010-08-10 19:27:13

标签: c

我认为*something* something不同。

额外的空格有什么作用?

发生在这里 - > void * malloc( size_t number_bytes );

7 个答案:

答案 0 :(得分:12)

int* foo == int *foo == int * foo == int  *   foo

空格对编译器没有任何影响。

答案 1 :(得分:10)

当您使用星号来获取地址的值时,它被称为dereference operator。例如:

int x = *something;

在您的问题的示例中,星号具有不同的含义,因为它是类型的一部分,而不是表达式的一部分。它用于指定返回类型是指针(在您的特定示例中,是一个void指针)。

额外的空间没有任何意义,编译器会忽略它。它只是为了提高可读性。

答案 2 :(得分:2)

声明中的*运算符始终绑定到声明符;这条线

void * malloc (size_t number_bytes);

被解析为,好像已被写入

void (*malloc(size_t number_bytes));

您可以编写T *p;T* p;甚至

,这是C语法的意外
T             *                     p; 

但所有这些都被解析为T (*p); - 空格对声明的解释方式没有区别。

答案 3 :(得分:1)

C忽略无关的空格,因此"* "应与"*"具有相同的效果。

如果您想进一步澄清,请发布代码示例。

答案 4 :(得分:0)

同样的事情,但添加了一些空格。

答案 5 :(得分:0)

查看Pointers

上的这篇文章

这两行完全相同。

答案 6 :(得分:0)

void * malloc(...)示例中,void *是类型。 malloc返回一个指向void的指针,该指针只是一个需要强制转换为特定类型的指针才能生效。