Trang nhà | KIẾN THỨC LẬP TRÌNH | C/C++ | Hướng dẫn khai báo hàm con trong C. Ưu điểm của hàm trong lập trình sẵn C


1. Các hàm trong C

Trong chỉ dẫn này, các bạn sẽ được reviews về các hàm vào C (cả hàm do người dùng định nghĩa với hàm tủ sách chuẩn). Ngoài ra, bạn cũng sẽ biết được tại sao tại sao những hàm lại được áp dụng trong lập trình.

Bạn đang xem: Các hàm cơ bản trong c++


*
*

Các hàm vào C


Hàm vào C (ngôn ngữ lập trình) là 1 trong khối mã thực hiện một trách nhiệm cụ thể.

Giả sử, bạn phải viết một lập trình để tạo ra một hình tròn và đánh màu đến nó. Bạn cần chọn nửa đường kính và màu sắc sắc. Bạn cũng có thể tạo 2 hàm dưới đây để tiến hành nhiệm vụ trên:

Tạo một hàm vẽ hình tròn: createCircle() functionTạo một hàm sơn màu: color() function

Việc phân chia các vấn đề phức hợp thành các vấn đề nhỏ tuổi hơn góp lập trình của công ty dễ hiểu với dễ thực hiện lại hơn.

Có hai nhiều loại hàm vào C:

Các hàm tủ sách tiêu chuẩnCác hàm do người dùng định nghĩa

1.1 những hàm tủ sách tiêu chuẩn

Các hàm tủ sách tiêu chuẩn đó là các hàm sẵn bao gồm trong lập trình C.

Các hàm này được khẳng định trong các header files (tệp bao gồm phần mở rộng .h)

Printf() là một hàm thư viện chuẩn có công dụng xuất công dụng đã được định dạng sẵn ra màn hình hiển thị (hiển thị hiệu quả trên màn hình). Hàm này được xác minh trong tệp tiêu đề stdio.h. Vì đó, để thực hiện hàm printf (), họ cần bao gồm tệp title stdio.h bằng cách sử dụng #include .Hàm sqrt() có tính năng tính căn bậc hai của một số. Hàm được xác minh trong tệp tiêu đề math.h.

Truy cập vào những hàm thư viện tiêu chuẩn chỉnh trong thiết kế C để tìm hiểu thêm.

1.2 các hàm do người dùng xác định

Bạn cũng rất có thể tạo các hàm trong C tương xứng với nhu cầu của mình. Những hàm do người dùng tạo ra được hotline là hàm do người tiêu dùng xác định.

Hàm do người tiêu dùng xác định hoạt động như gắng nào?

#include

void functionName()

… .. …

… .. …

int main()

… .. …

… .. …

functionName();

… .. …

… .. …

Lập trình này vẫn thực thi các mã sau hàm main()

Khi trình biên dịch gặp hàm functionName():, điều khiển của lập trình đã nhảy tới

void functionName()

Và, trình biên dịch ban đầu thực thi các mã bên phía trong functionName ().

Điều khiển lập trình sẽ quay trở lại hàm main() sau thời điểm mã bên trong hàm này được thực thi.

Lưu ý, thương hiệu hàm là định danh và phải là duy nhất.

Ưu điểm của các hàm trong C do người tiêu dùng xác định

Lập trình này vẫn dễ hiểu, dễ gia hạn và dễ sửa lỗi hơn.Các mã tái sử dụng hoàn toàn có thể được dùng trong những lập trình khácMột lập trình sẵn lớn rất có thể được tạo thành các mô-đun nhỏ tuổi hơn. Vì đó, hoàn toàn có thể chia một dự án công trình lớn thành đa phần và mỗi lập trình sẵn viên phụ trách một phần.

2. Các hàm trong C do người dùng xác định

2.1 Ví dụ: Hàm vào C do người dùng xác định

Đây là ví dụ về bài toán thêm 2 số nguyên. Để triển khai nhiệm vụ này, bạn cần tạo hàm addNumbers do người tiêu dùng xác định.

#include

int addNumbers(int a, int b); // function prototype

int main()

int n1,n2,sum;

printf(“Enters two numbers: “);

scanf(“%d %d”,&n1,&n2);

sum = addNumbers(n1, n2); // function call

printf(“sum = %d”,sum);

return 0;

int addNumbers(int a, int b) // function definition

int result;

result = a+b;

return result; // return statement

2.2 Nguyên mẫu hàm

Nguyên mẫu mã hàm đó là sự khai báo hàm: thương hiệu hàm, những tham số và kiểu trả về. Nó không hẳn là phần thân của hàm.

Nguyên chủng loại hàm thông tin cho trình biên dịch rằng hàm đó rất có thể sẽ được sử dụng trong thiết kế này.

Cú pháp của nguyên mẫu hàm

returnType functionName(type1 argument1, type2 argument2, …);

note: argument: đối số

Trong ví dụ như trên, int addNumbers(int a, int b); đó là nguyên mẫu hàm cung cấp thông tin cho trình biên dịch:

tên của hàm là addNumbers ()kiểu trả về của hàm là inthai đối số dạng hình int được chuyển đến hàm

Không yêu cầu tạo nguyên chủng loại hàm nếu hàm do bạn dùng xác minh được để trước hàm main().

2.3 Lời điện thoại tư vấn hàm

Quyền điều hành và kiểm soát lập trình được gửi sang cho hàm do người dùng khẳng định thông qua lời hotline hàm

Cú pháp của lời điện thoại tư vấn hàm

functionName(argument1, argument2, …);

Trong lấy một ví dụ trên, lời điện thoại tư vấn hàm được triển khai bằng lệnh addNumbers(n1, n2); bên trong hàm main().

2.4 Định nghĩa hàm

Định nghĩa hàm chứa khối mã để triển khai một trọng trách cụ thể. Trong lấy một ví dụ trên, có mang hàm chính là thêm 2 số cùng trả lại nó.

Cú pháp định nghĩa hàm

returnType functionName(type1 argument1, type2 argument2, …)

//body of the function

Khi một hàm được gọi, quyền điều khiển và tinh chỉnh của lập trình sẽ tiến hành chuyển sang khái niệm hàm. Với trình biên dịch bắt đầu thực thi các mã bên trong phần thân của hàm.

2.5 Truyền đối số cho 1 hàm

Trong lập trình, đối số ám chỉ một biến đổi được truyền cho hàm. Trong ví dụ trên, 2 biến hóa số n1 và n2 được media qua quy trình gọi hàm.

Các tham số a với b gật đầu các đối số được truyền vào trong khái niệm hàm. Những đối số này được điện thoại tư vấn là tham số xác định của hàm.

Loại đối số được truyền cho một hàm và các tham số thừa nhận phải khớp nhau. Trường hợp không, trình biên dịch đang báo lỗi.

Nếu n1 thuộc kiểu char thì a cũng phải thuộc dạng hình char. Nếu n2 thuộc hình dạng float thì biến đổi b cũng phải thuộc hình dạng float.

Cũng hoàn toàn có thể gọi một hàm nhưng mà không yêu cầu truyền đối số.

2.6 Câu lệnh return (trả về)

Câu lệnh return hoàn thành việc triển khai một hàm và trả về giá chỉ trị cho hàm vẫn gọi. Điều khiển của lập trình sẽ tiến hành chuyển mang lại hàm đang hotline nằm sau câu lệnh return.

Trong lấy một ví dụ trên, giá trị của biến đổi result được trả về đến hàm main. Phát triển thành sum trong hàm main() được gán giá trị này.

Cú pháp của câu lệnh return

return (expression);

Ví dụ,

return a;

return (a+b);

Kiểu quý hiếm được trả về từ hàm, giao diện trả về được hướng dẫn và chỉ định trong nguyên mẫu mã hàm và khái niệm hàm đề xuất khớp nhau.

Xem thêm: 100+ Hình Ảnh Cảm Ơn Thầy Và Các Bạn Đã Lắng Nghe, Mẫu Lời Cảm Ơn Trong Slide Powerpoint

Truy cập vào đó để biết thêm thông tin cụ thể về bí quyết truyền đối số và giá trị trả về từ 1 hàm.

3. Khai báo hàm vào C

Trong phần này, các bạn sẽ được tò mò về các phương thức tiếp cận không giống nhau để giải quyết cùng một vấn đề bằng phương pháp sử dụng, khai báo hàm vào C.

4 lập trình dưới đây sẽ bình chọn xem số nguyên mà người tiêu dùng nhập vào có phải là số yếu tắc không.

Đầu ra của tất cả các lập trình dưới đây đều tương tự nhau, và tôi chỉ tạo thành một hàm do bạn dùng xác định trong từng ví dụ. Mặc dù nhiên, cách tiếp cận mà tôi triển khai trong mỗi lấy ví dụ là không giống nhau.

Ví dụ 1: không tồn tại đối số như thế nào được truyền và không tồn tại giá trị làm sao trả về

#include

void checkPrimeNumber();

int main()

checkPrimeNumber(); // argument is not passed

return 0;

// return type is void meaning doesn’t return any value

void checkPrimeNumber()

{

int n, i, flag = 0;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

for(i=2; i Ví dụ 2: không có đối số nào được truyền nhưng có giá trị trả về

#include

int getInteger();

int main()

{

int n, i, flag = 0;

// no argument is passed

n = getInteger();

for(i=2; iVí dụ 3: Đối số được truyền nhưng không có giá trị trả về

#include

void checkPrimeAndDisplay(int n);

int main()

int n;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

// n is passed lớn the function

checkPrimeAndDisplay(n);

return 0;

// return type is void meaning doesn’t return any value

void checkPrimeAndDisplay(int n)

{

int i, flag = 0;

for(i=2; i Ví dụ 4: Đối số được truyền và có mức giá trị trả về

#include

int checkPrimeNumber(int n);

int main()

int n, flag;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

// n is passed lớn the checkPrimeNumber() function

// the returned value is assigned khổng lồ the flag variable

flag = checkPrimeNumber(n);

if(flag == 1)

printf(“%d is not a prime number”,n);

else

printf(“%d is a prime number”,n);

return 0;

// int is returned from the function

int checkPrimeNumber(int n)

{

int i;

for(i=2; i Cách tiếp cận nào giỏi hơn?

Để nhận xét cách tiếp cận nào xuất sắc hơn thì yêu cầu xem xét đến vấn đề mà ai đang muốn giải quyết. Dẫu vậy trong trường hợp này, truyền đối số cùng trả về giá chỉ trị xuất phát từ 1 hàm (ví dụ 4) là xuất sắc nhất.

Một chức năng nên tiến hành một trọng trách cụ thể. Hàm checkPrimeNumber() cần thiết lấy nguồn vào từ người dùng cũng tương tự không thể hiện thông báo thích thích hợp được. Nó đưa ra có công dụng kiểm tra một vài có đề xuất là số nguyên tố tuyệt không.

4. Đệ quy trong lập trình C

Trong phần này, bạn sẽ được học giải pháp khai báo hàm đệ quy trong lập trình sẵn C thông qua ví dụ.

Một hàm có tác dụng tự gọi chủ yếu nó thì được xem là hàm đệ quy. Với kỹ thuật này được gọi là đệ quy.

Đệ quy hoạt động như gắng nào?

void recurse()

… .. …

recurse();

… .. …

int main()

… .. …

recurse();

… .. …

Đệ quy diễn ra liên tục cho đến khi nó bị phòng lại vị một đôi điều kiện tuyệt nhất định.

Để ngăn ngừa đệ quy lặp vô hạn, bạn áp dụng câu lệnh if … else (hoặc phương pháp tiếp cận tương tự) trên vị trí nhưng mà một nhánh thực hiện lệnh hotline đệ quy cùng nhánh sót lại thì không.

Ví dụ: Tổng những số tự nhiên và thoải mái sử dụng đệ quy

#include

int sum(int n);

int main()

int number, result;

printf(“Enter a positive integer: “);

scanf(“%d”, &number);

result = sum(number);

printf(“sum = %d”, result);

return 0;

int sum(int n)

if (n != 0)

// sum() function calls itself

return n + sum(n-1);

else

return n;

Đầu ra

Enter a positive integer:3

sum = 6

Đầu tiên, hàm sum() được điện thoại tư vấn từ hàm main() với number được truyền bên dưới dạng đối số.

Giả sử thuở đầu giá trị của n bên phía trong sum() là 3. Trong lần gọi hàm tiếp theo, 2 được chuyển mang lại hàm sum(). Quy trình này tiếp tục cho tới khi n bằng 0.

Khi n bằng 0, điều kiện if không thành công xuất sắc và phần else được thực thi, trả về tổng số sau cùng của những số nguyên mang lại hàm main ().

Ưu điểm với nhược điểm của đệ quy

Đệ quy góp lập trình trở nên ngắn gọn gàng hơn. Mặc dù nhiên, sử dụng vòng lặp thay do đệ quy sẽ khiến lập trình ra mắt chậm rộng nhiều.

Tóm lại, đệ quy là 1 trong khái niệm quan trọng. Nó thường được áp dụng trong cấu trúc dữ liệu và các thuật toán. Ví dụ, đệ quy thường xuyên được sử dụng để giải quyết và xử lý những vấn đề như để mắt tới cây.

5. Lớp lưu trữ trong lập trình sẵn C

Trong phần này, các bạn sẽ được tìm hiểu về phạm vi và thời gian tồn tại của những biến cục bộ và những biến toàn cục. Kề bên đó, bạn cũng trở nên biết thêm thông tin về biến hóa tĩnh và trở thành register.

Tất cả các biến trong lập trình C đều có 2 tính năng: loại và lớp lưu trữ.

Loại đề cập mang đến kiểu dữ liệu của một biến. Với lớp lưu lại trữ khẳng định phạm vi, tài năng hiển thị và thời hạn tồn tại của một biến.

Có 4 nhiều loại lớp giữ trữ:

Tự độngbên ngoàitĩnhregister

5.1 biến đổi cục bộ

Các biến được khai báo bên phía trong một khối đó là biến tự động hóa hoặc biến hóa cục bộ. Cá biến toàn cục chỉ tồn tạo bên phía trong một khối mà nó được khai báo.

Ví dụ:

#include

int main(void) {

for (int i = 0; i 5.2 đổi thay toàn cục

Các phát triển thành được khai báo bên phía ngoài tất cả những hàm được gọi là biến bên ngoài hoặc phát triển thành toàn cục. Chúng rất có thể được truy vấn từ bất kỳ hàm làm sao trong lập trình.

Ví dụ 1: biến toàn cục

#include

void display();

int n = 5; // global variable

int main()

++n;

display();

return 0;

void display()

++n;

printf(“n = %d”, n);

Đầu ra

n = 7

Giả sử, một biến toàn cục được khai báo trong file1. Giả dụ bạn nỗ lực sử dụng biến hóa đó trong tệp file2, trình biên dịch đang khiếu nại. Để giải quyết và xử lý vấn đề này, chúng ta nên sử dụng từ khóa extern trong file2 để ám chỉ rằng rằng biến phía bên ngoài đã được khai báo vào một tệp khác.

5.3 biến hóa register

Từ khóa register dùng làm khai báo thay đổi register. đổi thay register vẫn chạy cấp tốc hơn trở nên cục bộ.

Tuy nhiên, các trình biên dịch văn minh có ưu thế là buổi tối ưu hóa mã cấp tốc chóng. Và áp dụng biến register cũng không giúp lập trình của chúng ta chạy nhanh hơn.

Trừ khi bạn làm việc trên hệ thống nhúng và bạn biết phương pháp tối ưu hóa mã mang đến những áp dụng nhất định thì không đề nghị sử dụng những biến register.

5.4 biến hóa tĩnh

Biến tĩnh được khai báo bằng cách sử dụng trường đoản cú khóa static. Ví dụ;

static int i;

Giá trị của trở nên tĩnh vẫn tồn tại cho tới khi xây dựng kết thúc.

Ví dụ 2: biến hóa tĩnh

#include

void display();

int main()

display();

display();

void display()

static int c = 1;

c += 5;

printf(“%d “,c);

Đầu ra

6 11

Trong lần hotline hàm đầu tiên, quý giá của c được khởi tạo bởi 1. Quý hiếm của nó tăng lên 5. Thời gian này, giá trị của c đang là 6 với số 6 được in ấn lên màn hình

Trong lần hotline thứ 2, c không được khởi tạo từ là 1 nữa vị c là 1 trong biến tĩnh. Cơ hội này, quý giá của c tăng lên 5. Và quý hiếm của c đang là 11, số 11 được in ấn lên màn hình.

Trên đấy là tất cả các kiến thức về các hàm vào C, điểm mạnh của việc áp dụng hàm. Hy vọng nội dung bài viết sẽ giúp bạn có thêm kiến thức về (hàm) function trong C. Chúc chúng ta thành công!