我正在使用GMP C庫中的類型mpz_t的某個項目。我有一些問題傳遞一個結構數組(包含mpz_ts)地址到一個函數: 我試圖用一些代碼來解釋我的問題。將結構數組(包含兩個mpz_t數字)傳遞給函數
因此,這裏的結構:
struct mpz_t2{
mpz_t a;
mpz_t b;
};
typedef struct mpz_t2 *mpz_t2;
void
mpz_t2_init(mpz_t2 *mpz_t2)
{
mpz_init(mpz_t2->a);
mpz_init(mpz_t2->b);
}
void
petit_test(mpz_t2 *test[])
{
printf("entering petit test function\n");
for (int i=0; i < 4; i++)
{
gmp_printf("test[%d]->a = %Zd and test[%d]->b = %Zd\n", test[i]->a, test[i]->b);
}
}
/* IN MAIN FUNCTION */
mpz_t2 *test = malloc(4 * sizeof(mpz_t2 *));
for (int i=0; i < 4; i++)
{
mpz_t2_init(&test[i]); // if I pass test[i] : compiler error
mpz_set_ui(test[i].a, i); //if test[i]->a compiler error
mpz_set_ui(test[i].b, i*10); //same problem
gmp_printf("%Zd\n", test[i].b); //prints correct result
}
petit_test(test);
的PROGRAMM打印預期的結果(在主),但在進入petit_test功能之後產生一個分段錯誤。
我需要編輯petit_test中的mpz_t2結構數組。 我嘗試了一些其他的方式分配和傳遞數組到函數,但我沒有設法得到這個權利。
如果有人解決了這個問題,我會非常感謝!
Regards, jérôme。
這裏真正的問題是,無數的程序員一旦暴露於C,就會認爲像這樣的問題是80%的開發者的任務。按照Miguel並切換到C#。 – reinierpost 2010-03-23 22:56:50
好吧,但我必須做到這一點,即使我不喜歡這樣做^^ – jerome 2010-03-23 22:58:32