Soru şu ana kadar çok şey söylüyor.C: Değişken parametre sayımı olan işlevler için tek bir işlev işaretçisi dizisini nasıl kullanabilirim?
Bunun nasıl yapılacağından emin değilim ve işe yarayan hiçbir şeyin yakınında bir yere gelmeyin. İşte
bazı örnek fonksiyonları var:add(int x, int y) {
return x+y;
}
ve Şimdiye kadar ikisi ile typedef kullanarak denedim
mean(int x1, int y1, int x2, int y2) {
return (x1 + y1 + x2 + y2)/4;
}
ama birine bir şey noktayı nasıl bilemiyorum her ikisi de: tür:
typedef int (*mathfunc2)(int x, int y);
typedef int (*mathfunc4)(int x1, int y1, int x2, int y2);
????? func_table[2] = {add, mean};
Bu tam olarak hile yaptı! Teşekkürler bir demet efendim. Şimdiye kadar 15 itibarı elde edersem ve bir yukarı ok verirsem umarım hatırlayacağım :) – vaughanj
Parametreler nedeniyle normal boşluk işaretleyicilerinden farklı şekilde davranan gösterim işlevi işaretleyicilerinin altındaydım. Yığın temizleme üzerinde bozuk olacağından, işlev işaretleyicilerini farklı parametrelerle karıştıramazsınız. Bir şeyi yanlış anlamış mıyım? – Ioan
@Ioan: İşlev, bildirilen işlev türü ile uyumlu bir işaretçi aracılığıyla çağrılmalıdır; bu, işlev işaretçisini depolama için farklı bir türe dönüştürürseniz, çağrı yapmak için doğru türde döndürülmeniz gerektiği anlamına gelir. işlev. Bu cevaptaki örnek bunu yapar. – caf