據我所知,在C++中,當您將非指針對象傳遞給方法時,它會在方法中使用它的副本。但是,在我的程序下面,我傳遞了一個副本,但我的方法實際上是編輯原始字符數組。爲什麼這個工作? :/將數組傳遞給C++中的方法
#include <iostream>
#include <string>
void Reverse(char s[], int sizeOfArray)
{
for (int i = 0 ; i < sizeOfArray; i++)
{
s[i] = 'f';
}
}
int main()
{
char c[3] = {'g','t','r'};
Reverse(c,3);
for (int t = 0 ; t < 3; t++)
{
std::cout << c[t];
}
return 0;
}
注:
輸出是FFF
因爲在C++中,數組是_not objects_。它可以處理包含數組的類和結構類型,這正是C++ 11的'std :: array'所在。 –
在附註上,這與C中的相同。在C中,通過指針傳遞結構是常見的,但它們也可以通過值傳遞。 –
@JanHudec取決於你如何定義術語「對象」。根據C++標準,數組絕對是對象。 – fredoverflow