2015-01-14 99 views
-1

我重新說這可能是一個noob問題,但我需要創建一個'char **'類型的數組,因爲這是我正在使用的函數所要求的參數類型。之後,我需要使該數組的每個元素成爲一個鏈接。我打開它甚至不能的可能性,但到目前爲止,這是我嘗試過,結果得到一個訪問衝突錯誤:創建一個指針指針的指針

char **array[10]; 
    *array[1] = ".\\images\\cockroach\\1.png"; 
    *array[2] = ".\\images\\cockroach\\1.png"; 
    *array[3] = ".\\images\\cockroach\\1.png"; 
    *array[4] = ".\\images\\cockroach\\1.png"; 
    *array[5] = ".\\images\\cockroach\\1.png"; 
    *array[6] = ".\\images\\cockroach\\1.png"; 
    *array[7] = ".\\images\\cockroach\\1.png"; 
    *array[8] = ".\\images\\cockroach\\1.png"; 

這裏是有問題的功能:

Enemytype makeenemy(int hp, int xcor, int ycor, int width, int height, int speed, int a1, int a2, char *imagel[10], char *imaged[10]) 
{ 
    int i = 0; 
    int j = 0; 
    Enemytype m; 
    m.width = width; 
    m.height = height; 
    m.xcor = xcor; 
    m.ycor = ycor; 
    m.speed = speed; 
    m.hp = hp; 
    m.a1 = a1; 
    m.a2 = a2; 
    while (imagel[i]){ 
     m.arrayl[i] = Loadtext(imagel[i]); 
     i ++ ; 
    } 
    while (imaged[j]){ 
     m.arrayd[j] = Loadtext(imaged[j]); 
     j++; 
    } 
    return m; 
} 

關鍵是要創建一個包含一系列圖像的模板,而不需要知道最初有多少圖像。 Loadtext(char* filename)是從給定鏈接創建圖像的功能。 因此它要求我提供'char **'。

+0

你的指針沒有初始化......如果你需要'char **',爲什麼不簡單地創建一個10個char *的數組然後獲取一個指向它的第一個元素的指針呢? –

+0

您能否顯示給定函數的原型?它似乎需要'char **'而不是'char ** [10]'。 – Jarod42

+1

這是關於C的問題,而不是關於C++的問題。如果我這樣做,我沒有在您的問題 –

回答

1

你很近,你只有一個*太多在每一行。

const char *array[10]; 
array[0] = ".\\images\\cockroach\\1.png"; 
array[2] = ".\\images\\cockroach\\1.png"; 
array[3] = ".\\images\\cockroach\\1.png"; 
array[4] = ".\\images\\cockroach\\1.png"; 
array[5] = ".\\images\\cockroach\\1.png"; 
array[6] = ".\\images\\cockroach\\1.png"; 
array[7] = ".\\images\\cockroach\\1.png"; 
array[9] = ".\\images\\cockroach\\1.png"; 
+0

中看到任何C++,該函數會告訴我'const char *'與'char **'不兼容 – seMikel

+1

好吧,讓其他函數正確無誤。我們留下來製作你的字符串的副本。但是字符串文字是隻讀的。 –

+0

錯字:'9'應該是'8'。並根據給定的代碼'array [9] = NULL'。 – Jarod42