我必須爲舊代碼添加新功能。舊的代碼有一個問題,有很多函數將數組作爲參數,像這樣的f(int x[][MAX_LENGTH])
。所以我不想問是否可以(標準)通過int *[MAX_LENGTH]
而不是?換句話說,代碼是以下標準?是否可以通過`int * [LENGTH]`而不是`int [] [LENGTH]`?
# include <iostream>
using namespace std;
void f(int x[][3])
{
for(int i = 0; i < 2; ++i)
{
for(int j = 0; j < 3; ++j)
cout << x[i][j] << " ";
cout << endl;
}
}
int main()
{
typedef int v3 [3];
v3 *x;
x = new v3 [2];
for(int i = 0; i < 2; ++i)
for(int j = 0; j < 3; ++j)
x[i][j] = i * 3 + j;
f(x);
delete [] x;
return 0;
}
編輯請如果這個問題的答案是「YES」點標準文件的段落。
但是,在這個例子中,'x'的類型確實是'int(*)[3]'。所以這個例子是正確的 - 它甚至不需要在函數參數「x」上進行轉換。 – aschepler 2011-05-10 12:42:37
@asch:Mihran特意詢問他是否可以將參數重寫爲int * [MAX_LENGTH]'。我的答案是否定的,因爲這會改變語義。 – fredoverflow 2011-05-10 12:45:59