【问题标题】:Passing a two dimensional array to function in GTK in C将二维数组传递给 C 中 GTK 中的函数
【发布时间】:2014-05-08 02:23:40
【问题描述】:

我尝试将二维数组作为参数传递给 GTK 中的函数,但没有成功。如何编辑数组中按钮的顺序?

GtkWidget *botones[4][4];

...

g_signal_connect(G_OBJECT(botones[0][0]), "clicked", G_CALLBACK(borra), botones);

...

void borra(GtkWidget *widget, gpointer info)
 {
    GtkWidget **elementos= (GtkWidget*) info;

     ...

 }

【问题讨论】:

    标签: c arrays gtk arguments


    【解决方案1】:

    botonesGtkWidget *的4*4数组,当你调用g_signal_connect时,你将它转换为gpointer,这是void *的typedef,然后在回调函数中,你应该转换gpointer 回到指向 4 个数组的指针 GtkWidget * 像这样:

    GtkWidget * (*elementos)[4] = (GtkWidget *(*)[4])info;
    

    然后您可以使用elementos[0][0] 访问二维数组。

    【讨论】:

    • 但是这样做我只会编辑“elementos[][]”对吗?更改不会保存在“botones[][]”中
    • 我的意思是数组作为值而不是引用传递
    • 不工作?你的意思是你不能修改全局数组?
    猜你喜欢
    • 2014-11-30
    • 2021-01-11
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多