考慮這一段代碼:指針在功能參數C++
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
他們爲什麼使用指針中的函數參數?我們不能這樣做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
?兩者有什麼區別?
謝謝
考慮這一段代碼:指針在功能參數C++
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
他們爲什麼使用指針中的函數參數?我們不能這樣做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
?兩者有什麼區別?
謝謝
在這種特殊情況下,根本就沒有(除了多了一個字母輸入)。傳遞給函數時,char數組「衰減」爲指針。
當作爲參數傳遞時,數組總是衰減爲指針。
在這種情況下數組類似於一個指針(它們指向的數組的第一個元件的存儲器)
void foo(char a[])
{
a[0] = '@';
cout << a[0];
cout << *a;
}
兩種呼叫來清點打印相同的字符「@」。
void foo(char a[])
{
// gives you the size of a pointer to the array's data type.
// prints 4
sizeof(a);
// prints char *
cout << typeid(a).name();
}
我不確定這是否爲標準。
它們是相同的。 – chris 2013-03-05 01:17:36