Các hàm tĩnh trong ngôn ngữ máy tính C

Cac Ham Tinh Trong Ngon Ngu May Tinh C



“Static” là một từ dành riêng trong ngôn ngữ máy tính, C. Nó là một mã định nghĩa lớp lưu trữ có thể được sử dụng với các hàm. Một chương trình C có thể có nhiều hơn một tệp. Chỉ một trong các tệp nên có hàm C main (). Trong bài viết này chỉ xem xét hai tệp: tệp có hàm C main () được gọi là mainFile.c và tệp khác không có hàm chính được gọi là otherFile.c

Chức năng toàn cầu

Hàm toàn cục là một hàm được định nghĩa trong tệp C trước hàm main (). Ngay cả hàm main () là một hàm toàn cục nhưng hàm main () không phải là trọng tâm trong bài viết này. Trong ngôn ngữ C, các hàm do người lập trình định nghĩa thường là các hàm toàn cục và được gọi đơn giản là các hàm.

Một hàm toàn cục có thể được gọi trong bất kỳ phạm vi nào trong tệp của nó. Để một hàm toàn cục được nhìn thấy trong một tệp khác, nguyên mẫu của nó phải được khai báo trong tệp khác đó (xem bên dưới.) Để ngăn một hàm được xác định trong một tệp bị nhìn thấy trong một tệp khác, hãy đặt trước định nghĩa bằng từ dành riêng, tĩnh. Với điều đó, hàm tĩnh sẽ là một hàm toàn cục chỉ trong tệp của chính nó và sẽ không được nhìn thấy trong tệp khác.







Vì vậy, một hàm toàn cục được định nghĩa trong otherFile.c có thể được nhìn thấy ở bất kỳ đâu trong otherFile.c. Để nó được nhìn thấy trong mainFile.c, nguyên mẫu của nó phải được khai báo trong mainFile.c (xem bên dưới.) Định nghĩa của nó trong otherFile.c không được đặt trước 'static'. Để ngăn không cho nó bị nhìn thấy trong mainFile.c, định nghĩa của nó trong otherFile.c phải được chuyển thành dấu phẩy tĩnh bằng cách đặt trước nó bằng từ static.



Bài viết này minh họa hàm tĩnh trong ngôn ngữ máy tính, C bắt đầu với ý nghĩa của nguyên mẫu hàm và việc sử dụng nó trong một chương trình C gồm hai hoặc nhiều tệp.



Việc biên dịch các tệp, mainFile.c và otherFile.c, có thể được thực hiện bằng lệnh Bash terminal sau:





gcc mainFile. c tập tin khác. c - nhiệt độ đó. exe

temp.exe là tên của tệp thực thi duy nhất kết quả.

Nội dung bài viết



- Giới thiệu - xem ở trên

- Nguyên mẫu hàm C

- Chức năng toàn cầu

- Chức năng tĩnh phù hợp

- Sự kết luận

Nguyên mẫu hàm C

Hãy xem xét định nghĩa hàm toàn cục:

char * fn1 ( char * sọc ) {
trở về sọc ;
}

Nguyên mẫu cho chức năng này là:

char * fn1 ( char * sọc ) ;

Nó là chữ ký hàm, kết thúc bằng dấu chấm phẩy.

Bây giờ, hãy để nội dung của otherFile.c là:

char * fn1 ( char * sọc ) {

trở về sọc ;

}

Giả sử rằng tệp, otherFile.c chỉ có định nghĩa của hàm toàn cục, fn1 (). Bây giờ hãy để nội dung của tệp, mainFile.c, là:

#include

char * fn1 ( char * sọc ) ;

int chính ( )
{
char * str = fn1 ( 'đã xem' ) ;
printf ( '%S \N ' , str ) ;

trở về 0 ;
}

Nó bắt đầu với việc bao gồm tiêu đề (thư viện). Tiếp theo là khai báo nguyên mẫu của hàm, fn () của tệp khác.

Tệp chính này không có định nghĩa của bất kỳ hàm toàn cục nào ngoài hàm main () mặc định. Trong hàm main, câu lệnh đầu tiên gọi hàm fn1 () được định nghĩa trong tệp kia. Lệnh gọi này sẽ không hiệu quả nếu nguyên mẫu của fn1 () không được khai báo trong tệp này, mainFile.c.

Nếu người đọc đã mã hóa hai tệp trên, thì anh ta có thể biên dịch chương trình thành một tệp thực thi bằng lệnh sau:

gcc mainFile. c tập tin khác. c - nhiệt độ đó. exe

nhấn phím Enter ở cuối dòng. Đầu ra phải là, 'nhìn thấy'.

Chức năng toàn cầu

Tệp mainFile.c có thể được sửa đổi như sau:

#include

char * fn1 ( char * sọc ) ;

char * fn ( char * st ) {
trở về st ;
}

int chính ( )
{
char * str1 = fn1 ( 'đã xem' ) ;
printf ( '%S \N ' , str1 ) ;
char * str2 = fn ( 'Toàn cầu được nhìn thấy trong tệp của nó.' ) ;
printf ( '%S \N ' , str2 ) ;
trở về 0 ;
}

Bây giờ, có hai hàm toàn cục trong tệp, mainFile.c. Tên của các hàm là fn () và main (). dfn () là một hàm toàn cục. Nó đã được nhìn thấy trong phạm vi cục bộ của hàm main () bằng một cuộc gọi. Trong ngôn ngữ C, một hàm toàn cục trong phạm vi toàn cục, chẳng hạn như fn (), được gọi đơn giản là một hàm. Ngoài ra, hàm toàn cục, fn1 () trong tệp, otherFile.c được gọi đơn giản là một hàm.

Nếu hai tệp được biên dịch lại thành temp.exe, thì phần xuất ra sẽ là:

đã xem

Toàn cầu được nhìn thấy trong tệp của nó.

Lưu ý: định nghĩa hàm cho fn () cũng có thể được hiển thị trong tệp khác, otherFile.c. Để đạt được điều đó, hãy khai báo nguyên mẫu của nó trong otherFile.c, như sau:

char * fn ( char * st ) ;

kết thúc bằng dấu chấm phẩy. Hoạt động này, được để lại như một bài tập cho người đọc.

Chức năng tĩnh phù hợp

Từ cuộc thảo luận ở trên, một hàm có thể được nhìn thấy trong bất kỳ phạm vi nào (ở bất kỳ đâu) trong tệp của nó. Nó cũng có thể được nhìn thấy trong một tệp khác, cho cùng một chương trình, nếu nguyên mẫu của nó được khai báo ở đó. Để ngăn định nghĩa của tệp bị nhìn thấy trong một tệp khác, hãy đặt định nghĩa tĩnh bằng cách đặt trước định nghĩa bằng từ dành riêng, tĩnh. Ngay cả khi nguyên mẫu của nó được khai báo trong tệp khác, nó vẫn sẽ không được nhìn thấy trong tệp khác. Các tệp chương trình thậm chí sẽ không biên dịch. Để minh họa điều này, hãy để nội dung của tệp, otherFile.c là:

tĩnh char * fn1 ( char * sọc ) {

trở về sọc ;

}

Đây là nội dung tương tự trong tệp, otherFile.c, như trước đây, nhưng với từ dành riêng trước đó, tĩnh. Nội dung của tệp mainFile.c, vẫn được giữ nguyên. Nếu cố gắng biên dịch các tệp chương trình bằng lệnh,

gcc mainFile. c otherFile. c - nhiệt độ đó. exe

trình biên dịch sẽ đưa ra thông báo lỗi, có nghĩa là chương trình không biên dịch. Ngay cả khi khai báo nguyên mẫu trong tệp khác, cũng được đặt trước bằng tĩnh, các tệp chương trình sẽ vẫn không biên dịch.

Sự kết luận

Một định nghĩa hàm trong ngôn ngữ C, là một hàm toàn cục. Hàm này có thể được gọi (nhìn thấy) trong bất kỳ phạm vi nào trong tệp của nó. Để hàm này được hiển thị trong một tệp khác, chẳng hạn như tệp chính, khai báo nguyên mẫu của nó phải được nhập vào tệp khác đó. Để ngăn không cho hàm này được nhìn thấy trong tệp khác, hãy làm cho định nghĩa của nó tĩnh bằng cách đặt trước nó bằng từ dành riêng, static.