C++ 写空乐趣(int*tab);和void-fun(int-tab[])是一样的吗?

C++ 写空乐趣(int*tab);和void-fun(int-tab[])是一样的吗?,c++,arrays,C++,Arrays,就像在题目中一样。当我写:void-fun(int*tab){}和写void-fun(int-tab[]){}一样吗?是的,第二个版本不允许你计算函数中数组的大小。它仍然会衰减为指针。:) 是的,第二个版本不允许您计算函数中数组的大小。它仍然会衰减为指针。:) 是的 void fun(int *tab){} void fun(int tab[]){} void fun(int tab[10]){} //whatever the size is 对编译器来说都是一样的。当作为函数参数传递时,数

就像在题目中一样。当我写:
void-fun(int*tab){}
和写
void-fun(int-tab[]){}
一样吗?

是的,第二个版本不允许你计算函数中数组的大小。它仍然会衰减为指针。:)

是的,第二个版本不允许您计算函数中数组的大小。它仍然会衰减为指针。:)

是的

void fun(int *tab){}
void fun(int tab[]){}
void fun(int tab[10]){}  //whatever the size is
对编译器来说都是一样的。当作为函数参数传递时,数组(大小与否)衰减为指针

在实践中,避免使用最后一个,因为它可能暗示函数知道大小,而实际上不知道大小。

void fun(int *tab){}
void fun(int tab[]){}
void fun(int tab[10]){}  //whatever the size is
对编译器来说都是一样的。当作为函数参数传递时,数组(大小与否)衰减为指针



在实践中,避免使用最后一个,因为它可能暗示函数知道大小,而实际上不知道大小。

是的,它是相同的..无论何时在程序中声明数组,都要说int tab[]。。如果要将该数组传递给其他函数,则实际上要传递该数组的基址位置,即&tab[0],它由用作函数int*tab中参数的指针指向。。。这实际上是通过引用调用的。

是的,它是相同的。。每当您在程序中声明数组时,请说int tab[]。。如果要将该数组传递给其他函数,则实际上要传递该数组的基址位置,即&tab[0],它由用作函数int*tab中参数的指针指向。。。这实际上是引用调用。

如果您不计算
[]
..@jrok中的额外字符,您的意思是什么?什么是“额外字符”?
*
是一个字符,
[]
是两个…@StoryTeller:哦,对了,为了可读性,如果函数需要数组的基址,可以编写后面的一个。如果它只是一个指针,您可以编写前一个指针。如果您不计算
[]
..@jrok中的额外字符,您的意思是什么?什么是“额外字符”?
*
是一个字符,
[]
是两个…@StoryTeller:哦,对了,为了可读性,如果函数需要数组的基址,可以编写后面的一个。如果它只是一个指针,你可以写前一个。我怎样才能用第一个版本计算出数组的大小呢?@nullpointer,你不能。使用
std::array
std::vector
或其他东西。@不能直接使用空指针。使用
std::vector
,将大小作为参数传递,或使用特殊值标记最后一个元素。@nullpointer,在第一个版本中也不能这样做。但是有些人用第二个来误导别人。@jrok:我总是这样做。但卢奇安·格里戈尔(Luchian Grigore)所写的很有趣,我认为还有另一种“神奇”的方法可以做到这一点;)我如何计算第一个版本的数组的大小?@nullpointer,你不能。使用
std::array
std::vector
或其他东西。@不能直接使用空指针。使用
std::vector
,将大小作为参数传递,或使用特殊值标记最后一个元素。@nullpointer,在第一个版本中也不能这样做。但是有些人用第二个来误导别人。@jrok:我总是这样做。但卢奇安·格里戈尔(Luchian Grigore)所写的很有趣,我认为还有另一种“神奇”的方法可以做到这一点;)这让它成为一个新手程序员最容易误导的语法糖…@YuHao:在我接受你的答案之前,再问一个问题;)为什么我要写最后一个,我的意思是:
void-fun(int-tab[10]){}
-这样做有什么意义?这到底意味着什么?@nullpointer数组有一个大小,比如
intarr[10]
,当数组作为函数参数传递时,它被转换为指向第一个元素的指针,因此大小被忽略。这使它成为新手程序员最容易误导的语法糖…@YuHao:在我接受你的答案之前,还有一个问题;)为什么我要写最后一个,我的意思是:
void-fun(int-tab[10]){}
-这样做有什么意义?这到底意味着什么?@nullpointer数组有一个大小,比如
intarr[10],当数组作为函数参数传递时,它被转换为指向第一个元素的指针,因此大小被忽略。