我认为*something
和* something
不同。
额外的空格有什么作用?
发生在这里 - > void * malloc( size_t number_bytes );
答案 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;
甚至
T * p;
但所有这些都被解析为T (*p);
- 空格对声明的解释方式没有区别。
答案 3 :(得分:1)
C忽略无关的空格,因此"* "
应与"*"
具有相同的效果。
如果您想进一步澄清,请发布代码示例。
答案 4 :(得分:0)
同样的事情,但添加了一些空格。
答案 5 :(得分:0)
查看Pointers
上的这篇文章这两行完全相同。
答案 6 :(得分:0)
在void * malloc(...)
示例中,void *
是类型。 malloc
返回一个指向void的指针,该指针只是一个需要强制转换为特定类型的指针才能生效。