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

[C language] Nested Function - Hàm Xếp Trong (GCC only)

0 0 9

Người đăng: Semi Dev

Theo Viblo Asia

Hàm xếp trong nested function hay hàm cục bộ local function không phải là một tính năng trong cấu hình tiêu chuẩn của ngôn ngữ C mà chỉ được hỗ trợ đặc biệt bởi trình biên dịch GCC.

Định nghĩa hàm cục bộ

Code ví dụ định nghĩa hàm add trong phạm vi cục bộ của main.

#include <stdio.h> void main (int $argc, char* $argv[]) { int add (int $x, int $y) { return $x + $y; } printf ("Total: %d \n", add (1, 2));
}

Kết quả:

Total: 3

Giống với hàm cục bộ của các ngôn ngữ khác ví dụ như JS, hàm cục bộ do GCC hỗ trợ có thể truy xuất tới các biến cục bộ của main và có thể được sử dụng làm kết quả trả về hay truyền vào một hàm khác ở dạng hàm gọi lại callback.

Biểu thức hàm vô danh

Biểu thức hàm lambda expression không có mặt trong cấu hình tiêu chuẩn của ngôn ngữ C mà chỉ được trình biên dịch GCC hỗ trợ mở rộng.

Trong code ví dụ ở phần trước, phần code định nghĩa hàm cục bộ add thực ra đã làm hai thao tác:

  • Khai báo một con trỏ hàm int (*add) (int, int) trong phạm vi cục bộ của main.
  • Khởi tạo một hàm vô danh và gán địa chỉ vào con trỏ add.
#include <stdio.h> void main (int $argc, char* $argv[]) { int (*add) (int, int) = ({ int __fn__ (int $x, int $y) { return $x + $y; } __fn__; }); printf ("Total: %d \n", add (1, 2));
}

So với code định nghĩa nested function, biểu thức lambda là một phần của câu lệnh đơn statement;.

Bình luận

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

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

4 đặc tính của lập trình hướng đối tượng (Object oriented program)

Lập trình hướng đối tượng quá quen thuộc rồi bạn nào học lập trình đều phải học, đi phỏng vấn cũng vậy hỏi suốt(chắc cái này tùy vào vị trí tuyển dụng chủ yếu junior chắc chắn sẽ hỏi).nó là nền tảng cho hầu hết các design pattern hiện nay.

0 0 34

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

Khác nhau giữa abstract class và interface khi nào dùng chúng

Nhắc đến Interface và abstract class hãy nhớ 2 từ này khá clear rồi, Khi sử dụng Interface là bạn Implement còn sử dụng abstract class là bạn extend. . Interface:. .

0 0 29

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

Chuyện con vịt, cái máy bay và cu Tèo đọc báo

Chuyện con vịt, cái máy bay và cu Tèo đọc báo. Người đọc tự chịu trách nhiệm về tính xác thực của bài viết.

0 0 53

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

Kinh nghiệm làm việc với Cgo

Kinh nghiệm làm việc với Cgo. Cuối tuần vừa rồi mình có làm một project nho nhỏ để học hỏi thêm, điểm khá thú vị là project này tuy không to lắm nhưng lại chứa khá là nhiều vấn đề và buộc mình phải tì

0 0 35

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

Cách xây dựng cấu trúc dữ liệu Stack và Queue.

Mở đầu. Hello các bạn, hôm nay mình sẽ chia sẻ với các bạn cách để có thể tự xây dựng 2 loại cấu trúc dữ liệu stack(ngăn xếp) và queue(hàng đợi) sử dụng mảng trong C++;.

0 0 31

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

Lập trình socket, giao tiếp client và server bằng ngôn ngữ C (với giao thức TCP)

Lập trình mạng là gì. Lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các ứng dụng.

0 0 150