我有一個創建字符指針數組作爲以下內容的C代碼:用最少的更改將靜態數組更改爲動態數組?
char* arr[100];
我使用的每個元素在該數組中爲指向正被另一個函數來計算一些字符串。所以基本上arr [0]會指向string1和arr [1]到string2等。
這工作得很好。不過,現在我要求讓用戶將字符串數量指定爲參數,從而使其更加靈活。
我該如何對代碼進行最小限度的更改?我明白我需要使用malloc。然而,我在之前的所有任務陳述中收到了很多警告。我改變了數組的聲明如下所示:
char* arr = (char*)malloc(n * sizeof(char*)); //where n is provided by user
我想,我只需要改變的聲明。現在所有的賦值語句都會發出警告(「賦值使得指針中的整數沒有強制轉換」)。以下是一個賦值語句的示例:
arr[i] = str; //where str is defined as char* and is calculated by another function
我在這裏錯過了什麼嗎?
請取下石膏。在C中,將'void *'轉換爲另一個指針時不需要強制轉換。 – 2012-03-10 17:05:56
已更改,但我不確定OP是否使用C或C++編譯器。 – 2012-03-10 21:24:05