任何人都可以用 C 解釋這個結構中寫的是什么嗎
struct Structure {
int i;
void (*function)(struct Structure*);
} ;
uj5u.com熱心網友回復:
這是一個“作業示例”:
#include <stdio.h>
struct Structure {
int i;
void (*function)(struct Structure *);
};
void foo(struct Structure *);
void bar(struct Structure *);
int main(void) {
struct Structure a = {0, foo};
struct Structure b = {42, NULL}; // don't call b.function() just yet!!
a.function(&b);
b.function(&a);
}
void foo(struct Structure *a) {
if (a->function == NULL) a->function = bar;
printf("value from foo: %d\n", a->i);
}
void bar(struct Structure *a) {
printf("value from bar: %d\n", a->i);
}
uj5u.com熱心網友回復:
正如@jonathen-leffler 在評論中所描述的那樣,該結構有 2 個成員。結構中的第一個成員保存一個整數值。第二個成員是函式指標,該函式接受“指向結構結構的指標”的輸入引數,并且不回傳任何內容。
所以,第二個成員可以指向一個宣告如下的函式,
void someWork(struct Structure* someStruct)
{
//do some work on struct
someStruct->i = 5;
}
要宣告和初始化這種型別的結構,請執行以下操作,
struct Structure myStruct;
myStruct.i=400;
myStruct.function = &someWork;
為了更容易參考函式指標,typedef
可以使用,如下所示:
typedef void (*func)(struct Structure*);
//assign it as
func = &someWork;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/466499.html
下一篇:指標和變數賦值基本