Trang chủ | KIẾN THỨC LẬP TRÌNH | C/C++ | Hướng dẫn khai báo hàm bé trong C. Ưu điểm của hàm trong xây dựng C


Nội dung

1. Các hàm trong C2. Các hàm trong C do người dùng xác định3. Khai báo hàm vào C4. Đệ quy trong xây dựng C5. Lớp lưu trữ trong lập trình C

1. Các hàm vào C

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

Bạn đang xem: Cách dùng hàm trong c


*
*

Các hàm trong C


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

Giả sử, bạn cần viết một lập trình sẵn để tạo một hình tròn trụ và đánh màu đến nó. Bạn phải chọn nửa đường kính và màu sắc. Chúng ta cũng có thể tạo 2 hàm tiếp sau đây để thực hiện 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 những vấn đề tinh vi thành những vấn đề nhỏ hơn giúp lập trình của chúng ta dễ hiểu cùng dễ thực hiện lại hơn.

Có hai các loại hàm trong C:

Các hàm thư viện tiêu chuẩnCác hàm do người dùng định nghĩa

1.1 các hàm tủ sách tiêu chuẩn

Các hàm thư viện tiêu chuẩn chính là các hàm sẵn có trong xây dựng C.

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

Printf() là một hàm thư viện chuẩn có chức năng xuất kết quả đã được format sẵn ra màn hình hiển thị (hiển thị công dụng trên màn hình). Hàm này được xác định trong tệp title stdio.h. Bởi đó, để áp dụng hàm printf (), bọn họ cần bao hàm tệp tiêu đề stdio.h bằng phương pháp sử dụng #include .Hàm sqrt() có công dụng tính căn bậc nhị của một số. Hàm được khẳng định trong tệp title math.h.

Truy cập vào những hàm tủ sách tiêu chuẩn chỉnh trong thiết kế C để tò mò thêm.

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

Bạn cũng hoàn toàn có thể tạo các hàm vào C tương xứng với yêu cầu của mình. Các hàm do người tiêu dùng tạo ra được call là hàm do người dùng xác định.

Hàm do người dùng xác định vận động như nạm nào?

#include

void functionName()

… .. …

… .. …

int main()

… .. …

… .. …

functionName();

… .. …

… .. …

Lập trình này đã 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 đang nhảy tới

void functionName()

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

Điều khiển xây dựng sẽ trở lại hàm main() sau khi mã bên phía trong hàm này được thực thi.

Lưu ý, tên hàm là định danh và đề xuất là duy nhất.

Ưu điểm của các hàm vào 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ễ dàng sửa lỗi hơn.Các mã tái sử dụng hoàn toàn có thể được dùng giữa những lập trình khácMột thiết kế lớn có thể được tạo thành các mô-đun nhỏ hơn. Bởi đó, rất có thể chia một dự án lớn thành phần lớn và mỗi xây dựng viên đảm nhận một phần.

2. Những hàm vào C do người tiêu 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ụ như về vấn đề thêm 2 số nguyên. Để tiến hành 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 mã hàm

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

Nguyên mẫu hàm thông báo cho trình biên dịch rằng hàm đó rất có thể sẽ được áp dụng trong lập trình này.

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

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

note: argument: đối số

Trong lấy ví dụ trên, int addNumbers(int a, int b); đó là nguyên mẫu mã hàm đưa 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ố kiểu int được chuyển mang đến hàm

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

2.3 Lời gọi hàm

Quyền điều hành và kiểm soát lập trình được chuyển sang mang lại hàm do tín đồ dùng xác minh thông qua lời call hàm

Cú pháp của lời hotline hàm

functionName(argument1, argument2, …);

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

2.4 Định nghĩa hàm

Định nghĩa hàm đựng khối mã để thực hiện một nhiệm vụ cụ thể. Trong ví dụ như trên, định nghĩa hàm chính là thêm 2 số với 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 có mang hàm. Cùng trình biên dịch ban đầ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 một hàm

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

Các thông số a cùng b gật đầu các đối số được truyền vào trong tư tưởng hàm. Những đối số này được hotline là tham số xác nhận của hàm.

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

Nếu n1 thuộc đẳng cấp char thì a cũng buộc phải thuộc thứ hạng char. Nếu như n2 thuộc hình trạng float thì đổi thay b cũng nên thuộc kiểu dáng float.

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

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

Câu lệnh return kết thúc việc thực thi một hàm với trả về giá trị cho hàm đã gọi. Điều khiển của lập trình sẽ tiến hành chuyển đến hàm đang điện thoại tư vấn nằm sau câu lệnh return.

Trong lấy ví dụ như trên, quý giá của biến chuyển result được trả về cho hàm main. Biến sum trong hàm main() được gán cực hiếm này.

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

return (expression);

Ví dụ,

return a;

return (a+b);

Kiểu quý giá được trả về trường đoản cú hàm, vẻ bên ngoài trả về được chỉ định trong nguyên mẫu hàm và quan niệm hàm đề nghị khớp nhau.

Xem thêm: " Blow Your Mind Là Gì - Blow Your Mind Nghĩa Là Gì

Truy cập vào chỗ này để hiểu biết thêm thông tin chi tiết về bí quyết truyền đối số và giá trị trả về xuất phát từ 1 hàm.

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

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

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

Đầu ra của toàn bộ các lập trình tiếp sau đây đều như thể nhau, và tôi chỉ chế tạo ra một hàm do người dùng xác định trong mỗi ví dụ. Tuy nhiên, cách tiếp cận mà tôi thực hiện trong mỗi lấy ví dụ là khác 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ó mứ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 tồn tại giá trị trả về

#include

void checkPrimeAndDisplay(int n);

int main()

int n;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

// n is passed to 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ó 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 to the checkPrimeNumber() function

// the returned value is assigned to 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?

Để review cách tiếp cận nào xuất sắc hơn thì cần xem xét đến vụ việc mà nhiều người đang muốn giải quyết. Nhưng mà trong trường đúng theo này, truyền đối số cùng trả về giá bán trị xuất phát từ một hàm (ví dụ 4) là giỏi nhất.

Một tính năng nên thực hiện một nhiệm vụ cụ thể. Hàm checkPrimeNumber() quan trọng lấy đầu vào từ fan dùng cũng như không thể hiển thị thông báo thích thích hợp được. Nó chi có tính năng kiểm tra một số trong những có nên là số nguyên tố giỏi không.

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

Trong phần này, các bạn sẽ được học biện pháp khai báo hàm đệ quy trong thiết kế C trải qua ví dụ.

Một hàm có chức năng tự gọi chính nó thì được coi là hàm đệ quy. Với kỹ thuật này được hotline là đệ quy.

Đệ quy vận động như ráng nào?

void recurse()

… .. …

recurse();

… .. …

int main()

… .. …

recurse();

… .. …

Đệ quy ra mắt liên tục cho đến khi nó bị phòng lại vì một đôi điều kiện 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 bí quyết tiếp cận tương tự) tại vị trí mà lại một nhánh triển khai lệnh hotline đệ quy với nhánh sót lại thì không.

Ví dụ: Tổng các số thoải mái và tự nhiên 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 gọi từ hàm main() cùng 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 trong sum() là 3. Trong lần gọi hàm tiếp theo, 2 được chuyển đến hàm sum(). Quá 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 và phần else được thực thi, trả về tổng số sau cuối của những số nguyên mang đến hàm main ().

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

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

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

5. Lớp lưu trữ trong xây dựng 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 toàn thể và các biến toàn cục. ở bên cạnh đó, bạn cũng biến thành biết thêm thông tin về biến chuyển tĩnh và đổi thay register.

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

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

Có 4 một số loại lớp lưu trữ:

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

5.1 biến hóa cục bộ

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

Ví dụ:

#include

int main(void) {

for (int i = 0; i 5.2 phát triển thành toàn cục

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

Ví dụ 1: thay đổi 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 thể được khai báo vào file1. Trường hợp bạn nỗ lực sử dụng đổi thay đó trong tệp file2, trình biên dịch vẫn khiếu nại. Để giải quyết vấn đề này, chúng ta nên áp 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 trong một tệp khác.

5.3 biến chuyển register

Từ khóa register dùng để làm khai báo biến đổi register. Biến hóa register đã chạy cấp tốc hơn thay đổi cục bộ.

Tuy nhiên, các trình biên dịch tiến bộ có ưu điểm là buổi tối ưu hóa mã nhanh chóng. Và áp dụng biến register cũng không giúp lập trình của doanh nghiệp chạy nhanh hơn.

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

5.4 đổi thay tĩnh

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

static int i;

Giá trị của đổi thay tĩnh vẫn tồn tại cho đến khi lập trình kết thúc.

Ví dụ 2: biến đổi 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. Giá trị của nó tăng lên 5. Thời điểm này, quý giá của c đang là 6 với số 6 được in lên màn hình

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

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