如果您编写一个 C++ 函数,例如
无效 readEmStar( int *arrayOfInt )
{
}
与 C++ 函数如:
无效 readEmSquare(int arrayOfInt[])
{
}
使用 [方括号] 与 *asterisk 有什么区别,假设它们与编译器等效,是否有人有关于哪个更可取的样式指南?
为了完整起见,举个例子
void readEmStar( int *arrayOfInt, int len )
{
for( int i = 0 ; i < len; i++ )
printf( "%d ", arrayOfInt[i] ) ;
puts("");
}
void readEmSquare( int arrayOfInt[], int len )
{
for( int i = 0 ; i < len; i++ )
printf( "%d ", arrayOfInt[i] ) ;
puts("");
}
int main()
{
int r[] = { 2, 5, 8, 0, 22, 5 } ;
readEmStar( r, 6 ) ;
readEmSquare( r, 6 ) ;
}
原文由 bobobobo 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您使用类型
char x[]
而不是char *x
没有初始化 时,您可以认为它们相同。您不能在没有初始化的情况下将新类型声明为char x[]
,但您可以接受它们作为函数的参数。在这种情况下,它们与指针相同。当您使用类型
char x[]
而不是char *x
进行初始化 时,它们是完全不同的 100%。char x[]
与char *x
不同的示例:sz
实际上是一个数组,而不是一个指针。char x[]
与char *x
相同的示例:传递给函数的编码风格:
你做哪一个真的不重要。有些人更喜欢
char x[]
因为很明显你想要传入一个数组,而不是单个元素的地址。通常这已经很清楚了,因为您将有另一个参数用于数组的长度。
进一步阅读:
请参阅这篇题为 数组与指针不同的帖子!