我是新來的c + +編程我不得不用以下參數調用一個函數。 int Start(int argc,char ** argv)。在Visual C++中將1D指針數組(char)轉換爲2D指針數組(char)。
當我嘗試用下面的代碼調用上述函數時,我得到運行時異常。有人能幫我解決上述問題嗎?
char * filename=NULL;
char **Argument1=NULL;
int Argument=0;
int j = 0;
int k = 0;
int i=0;
int Arg()
{
filename = "Globuss -dc bird.jpg\0";
for(i=0;filename[i]!=NULL;i++)
{
if ((const char *)filename[i]!=" ")
{
Argument1[j][k++] = NULL; // Here I get An unhandled
// exception of type
//'System.NullReferenceException'
// occurred
j++;
k=0;
}
else
{
(const char)Argument1[j][k] = filename [j]; // Here I also i get exception
k++;
Argument++;
}
}
Argument ++;
return 0;
}
Start (Argument,Argument1);
這是假設你想要一個二維數組,但我不認爲你需要它。如果您希望存儲多個文件名,例如,您需要一個2D數組。 [0] [ 「文件中的一個」] [1] [ 「文件中的兩個」] [2] [ 「文件中的三個」] 但我想你想一維數組 [F] [I] [L] [E] [] [O] [N] [E] – Craig 2010-01-27 07:56:27
嗨克雷格, 感謝您的寶貴意見。我試過了你的建議,但遇到同樣的例外。我的主要動機是稱爲開始(參數,**參數);機能的研究。 – 2010-01-27 08:14:41
你知道兩維數組是如何工作的嗎?我的意思不是聽起來不尊重,而是你想從代碼中看到的是[0] [f] [1] [i] [2] [l] [3] [e],作爲二維數組,你正在分配兩個很大的空間。如果你想要它,所以它是[0] [文件名1] [1] [文件名2],只需從循環中刪除j + +,每次你想添加另一個文件名 – Craig 2010-01-28 00:40:22