編輯:一個初始的「float **漂浮;」是一個錯誤,更正。此外,「*浮動[0] = 1.0;」確實有效,但「*浮動[1] = 1.0;」 segfauls在那一點上。該數組是malloced。編纂對迂腐c99沒有任何警告。爲什麼這個指針不能傳遞?
這工作:
(僞:)
void func(int*);
int i;
func(&i);
void func(int* i) {
func2(i);
}
void func2(int* i) {
*i = 2;
}
初始值改變爲2
但這並不起作用:在分配
void func(float**);
float* floats;
func(&floats);
void func(float** floats) {
func2(floats);
}
void func2(float** floats) {
*floats[1] = 1.0;
}
段錯誤;
什麼樣的編譯器可以讓你編譯這個沒有錯誤? – 2010-08-24 00:29:25
我們在黑暗中刺傷,直到您發佈實際的代碼。這裏有什麼不編譯,並有大量的錯字('浮動**浮動')。如果你可以在實際的編譯測試程序中複製你的錯誤,這將是一個很大的幫助。 – 2010-08-24 00:33:12
如果你已經修復了你的拼寫錯誤,那麼在給* * * floats [1] *賦值之前,你的當前代碼仍然需要先爲* \ * float *分配一些內存。 * float *是指向* float *的指針,* \ * float *是指向一個float數組的指針。 – smwikipedia 2010-08-24 00:58:46