- vừa được xem lúc

con trỏ hàm

0 0 4

Người đăng: Nguyễn Đặng Triều

Theo Viblo Asia

Lý thuyết

Khái niệm

Những con trỏ thông thường thì sẽ lưu địa chỉ của biến. Còn con trỏ hàm thì sẽ lưu địa chỉ của một hàm.

Video: https://www.youtube.com/watch?v=ynYtgGUNelE

Cú pháp

kiểu trả về (*name)(tham số truyền)

Ví dụ:

  • void (*func)(void):
    • return: None
    • param: None
  • void (*func)(int*, int):
    • return: None
    • param: int*, int
  • Còn rất nhiều ... Tùy thuộc vào nhu cầu.

Ứng dụng

Ví dụ 1

#include <stdio.h> typedef void (*func_ptr)(void); void print_obj1(void)
{ printf("Object 1\n");
} void print_obj2(void)
{ printf("Object 2\n");
} int main()
{ // Khai báo con trỏ hàm func_ptr p; p = print_obj1; p(); printf("dia chi ham print_obj1: %p\n", p); printf("dia chi ham print_obj2: %p\n", print_obj2); return 0;
}

Ouput

Object 1
dia chi ham print_obj1: 0x563524d35169
dia chi ham print_obj2: 0x563524d35183
dia chi ham print_obj3: 0x563524d3519d

Khi ta có địa chỉ của 1 hàm nào đó, thì ta có thể gọi trực tiếp nó để thực thi yêu cầu.

Ví dụ 2

#include <stdio.h> typedef void (*func_ptr)(int); void print_obj1(int id)
{ printf("Object %d\n", id);
} int main()
{ int id_obj1 = 1; // Khai báo con trỏ hàm func_ptr p; p = print_obj1; p(id_obj1); return 0;
}

Output

Object 1
dia chi ham print_obj1: 0x561a7d6c7149

Bình luận

Bài viết tương tự

- vừa được xem lúc

Memory layout của một chương trình C/C++

1. Đặt Vấn Đề.

0 0 58

- vừa được xem lúc

Sự khác nhau giữa bộ nhớ Heap và bộ nhớ Stack trong lập trình

1. Giới thiệu. . Như chúng ta đã biết thì việc Quản lý bộ nhớ đối với một lập trình viên là rất quan trọng.

0 0 72

- vừa được xem lúc

Tích hợp thư viện C/C++ vào một dự án Flutter như thế nào?

Chào các bạn hôm nay rảnh rỗi thì mình viết một bài hướng dẫn về cách tích hợp một thư viện C/C++ vào một dự án Flutter. Thì cũng khá đơn giãn thôi vì Flutter đã cũng cấp cho chúng ta một thư viện khá

0 0 76

- vừa được xem lúc

Programming

Definition of Programming. .

0 0 50

- vừa được xem lúc

Gọi hàm của C++ trong Python bằng ctypes

Nếu đã từng dùng qua các thư viện liên quan đến toán học của Python như numpy, các bạn sẽ để ý thấy các nó có tốc độ xử lý rất nhanh. Điều này là do một phần của package này được viết bằng C/C++ và ph

0 0 51

- vừa được xem lúc

Build ứng dụng Cross Platform với Go và CGO

1. Giới thiệu.

0 0 52