簡體   English   中英

調用函數指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM