[英]Calling a function poiner
這是如何創建函數指針以添加print
方法的后續操作, 在結構中添加函數指針以進行打印。 假設我已經按如下方式創建了它:
typedef struct Book {
char* title;
unsigned int year;
void (*print)(struct Book *book);
} Book;
void print(Book *book)
{
printf("{\n\ttitle: \"%s\",\n\tyear: %d\n}\n", book->title, book->year);
}
int main(int argc, char * argv[])
{
Book book = {
.title="Jaws",
.year=2000
};
print(&book); // this works
book.print(&book); // this seg faults
}
調用book.print()
的正確方法是什么?
它是段錯誤,因為您沒有分配print
指針。 試試這個:
int main(int argc, char * argv[])
{
Book book = {
.title="Jaws",
.year=2000,
.print=print
};
print(&book); // this works
book.print(&book); // this no longer seg faults
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.