>1) Подключаю функцыю к 9 кнопкам, где в качестве данных передаю адрес gint переменной, при >каждом вызове функции значение n увеличивается от 0 до 8 >for(i=0;i<9;i++){ > button = gtk_button_new (); > g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (click),&n); > gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0); >}Я так понимаю, перебор идет не по i, а по n? Иначе я просто затрудняюсь увидеть тут увеличение n. (: Видимо, вся проблема в том, что передавая &n, то есть _адрес_ переменной n, ты получаешь в рез-те то, что выводимое тобой *(gint*)data является тем же самым n. Вернее значением, взятым по адресу, где хранится n. Фактически, если ты остановишь цикл на 4х итерациях вместо 8ми, то получишь data: 4 data: 4 data: 4 Если посмотришь в отладчике в нутри callback'а, то ты увидишь, что они все получают одинаковый параметр - адрес переменной n. Что ты, собственно, туда и передал. (: Передавай значение.
|