我徘徊在最後6個小時試圖解決這個該死的問題。首先,我是一個c編程的完全新手,所以請不要期望太高。 我需要編寫一個程序,在結構中創建一個整數數組。所以我寫了一個頭文件,並且除main之外還創建了另一個名爲「intarray.c」的源文件,因爲我必須這樣做。我包括了一切等等,現在我需要一個函數,它得到一個參數「int n」,用於在結構中創建int數組a [n]。但我無法得到這個工作..對不起,我的壞解釋,但我不知道我在這裏幹什麼。我也嘗試過使用指針,但是這讓我困惑,我不確定它們是否有必要。C - 在源文件中創建一個結構
我的頭看起來像這樣:
#ifndef INTARRAY_H_INCLUDED
#define INTARRAY_H_INCLUDED
struct IntArray
{
int length;
int numbers[];
};
void create(int);
void destruct();
void read(int);
void write(int, int);
#endif // INTARRAY_H_INCLUDED
和我的功能看起來像這樣:
create(int n)
{
struct IntArray arr;
arr.length = n;
arr.numbers[n];
}
但現在我不能在其他功能,例如使用結構如果我想在數組中寫入特定的位置。我該如何解決這個問題? 和啞巴問題。
這段代碼甚至沒有編譯。閱讀關於靈活數組成員和動態內存分配你的函數原型也是錯誤的。總之:alomost中的錯誤太多,沒有代碼顯示。重溫你的課程材料或者獲得一本好的C書,並向你的導師諮詢意見。 – Olaf
'struct IntArray * create(int n){struct IntArray * arr = calloc(1,sizeof(* arr)+ n * sizeof(int)); if(arr){arr.length = n; } return arr; }' – BLUEPIXY
如果一個結構體有一個靈活的數組成員,它必須使用'malloc()'來分配,這樣你就可以添加你想要的數組的大小。 – Barmar