Các hàm thư viện trong c++

  -  

Trang công ty | 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 thiết kế C


Nội dung

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

1. Những hàm trong C

Trong chỉ dẫn này, bạn sẽ được trình làng về các hàm trong C (cả hàm do người tiêu dùng định nghĩa với hàm tủ sách chuẩn). Quanh đó ra, bạn cũng trở nên biết được lý do 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 thư viện trong c++


*
*

Các hàm vào C


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

Giả sử, bạn cần viết một thiết kế để sinh sản một hình tròn trụ và đánh màu cho nó. Bạn phải chọn bán kính và color sắc. Bạn cũng có thể tạo 2 hàm dưới đâ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 đánh màu: color() function

Việc phân chia những 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 bạn dễ hiểu cùng dễ thực hiện lại hơn.

Có hai nhiều loại hàm vào 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 những hàm thư viện tiêu chuẩn

Các hàm tủ sách tiêu chuẩn đó là các hàm sẵn có trong xây dựng C.

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

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

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

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

Bạn cũng có thể tạo các hàm vào C phù hợp với nhu yếu của mình. Những hàm do người tiêu dùng tạo ra được điện thoại tư vấn 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 chuyển động như nuốm nào?

#include

void functionName()

… .. …

… .. …

int main()

… .. …

… .. …

functionName();

… .. …

… .. …

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

Khi trình biên dịch chạm mặt 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 bước đầu thực thi các mã bên trong functionName ().

Điều khiển thiết kế sẽ trở về hàm main() sau thời điểm mã phía 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 vào C do người tiêu dùng xác định

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

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

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

Đây là lấy ví dụ về bài toán thêm 2 số nguyên. Để tiến hành nhiệm vụ này, bạn phải tạo hàm addNumbers do người 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 chính là sự khai báo hàm: thương hiệu hàm, các tham số với kiểu trả về. Nó chưa phải là phần thân của hàm.

Nguyên mẫu hàm thông tin cho trình biên dịch rằng hàm đó có thể sẽ được áp dụng trong lập trình sẵn 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); chính là nguyên mẫu hàm báo 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ố loại int được chuyển đến hàm

Không bắt buộc tạo nguyên chủng loại hàm nếu hàm do tín đồ dùng xác minh được đặt trước hàm main().

2.3 Lời gọi hàm

Quyền kiểm soát điều hành lập trình được gửi sang cho hàm do tín đồ dùng xác định thông qua lời điện thoại tư vấn hàm

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

functionName(argument1, argument2, …);

Trong lấy ví dụ như trên, lời hotline hàm được thực hiện 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 cất khối mã để thực hiện một nhiệm vụ cụ thể. Trong ví dụ như trên, quan niệm hàm đó là thêm 2 số với trả lại nó.

Cú pháp khái niệm hàm

returnType functionName(type1 argument1, type2 argument2, …)

//body of the function

Khi một hàm được gọi, quyền tinh chỉnh của lập trình sẽ tiến hành chuyển sang định nghĩa hàm. Cùng trình biên dịch bước đầu thực thi những mã phía 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 trở nên được truyền mang đến hàm. Trong lấy ví dụ như trên, 2 đổi thay số n1 cùng n2 được media qua quá trình gọi hàm.

Các tham số a với b đồng ý các đối số được truyền vào trong có mang hàm. Các đối số này được call là tham số xác nhận của hàm.

Loại đối số được truyền cho 1 hàm và những tham số phê chuẩn phải khớp nhau. Giả dụ không, trình biên dịch đang báo lỗi.

Nếu n1 thuộc dạng hình char thì a cũng bắt buộc thuộc kiểu char. Trường hợp n2 thuộc loại float thì trở nên b cũng bắt buộc thuộc dạng hình float.

Cũng hoàn toàn có thể gọi một hàm cơ mà không buộc phải truyền đối số.

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

Câu lệnh return chấm dứt việc triển khai một hàm cùng trả về giá trị đến hàm vẫn gọi. Điều khiển của lập trình sẽ được chuyển đến hàm đang call nằm sau câu lệnh return.

Trong lấy ví dụ như trên, giá trị của biến hóa result được trả về mang đến hàm main. đổi mới sum trong hàm main() được gán quý 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ý hiếm được trả về từ hàm, vẻ bên ngoài trả về được hướng đẫn trong nguyên mẫu hàm và tư tưởng hàm phải khớp nhau.

Xem thêm: Lời Bài Hát Nắng Mùa Hạ - Lời Bài Hát: Nắng Mùa Hạ

Truy cập vào chỗ này để biết thêm thông tin chi tiết về biện pháp truyền đối số và cực hiếm trả về từ một hàm.

3. Khai báo hàm trong 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 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ẽ chất vấn xem số nguyên mà người dùng nhập vào liệu có phải là số thành phần không.

Đầu ra của toàn bộ các lập trình sau đây đều tương tự nhau, cùng tôi chỉ sản xuất một hàm do tín đồ dùng khẳng định trong từng ví dụ. Tuy nhiên, phương pháp tiếp cận nhưng tôi triển khai trong mỗi ví dụ là khác nhau.

Ví dụ 1: không có đối số 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ố như thế 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 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 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 tốt hơn?

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

Một tính năng nên triển khai một trách nhiệm cụ thể. Hàm checkPrimeNumber() thiết yếu lấy đầu vào từ fan dùng cũng tương tự không thể hiện thông báo thích vừa lòng được. Nó đưa ra có công dụng kiểm tra một vài có đề xuất là số nguyên tố hay không.

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

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

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

Đệ quy chuyển động như nạm 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ày một vài điều kiện nhất định.

Để ngăn ngừa đệ quy lặp vô hạn, bạn thực hiện 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 thực hiện lệnh điện thoại tư vấn đệ quy cùng nhánh còn lại thì không.

Ví dụ: Tổng những số 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 hotline từ hàm main() với number được truyền dưới dạng đối số.

Giả sử ban sơ giá trị của n bên trong sum() là 3. Trong lượt 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ởi 0.

Khi n bởi 0, đk 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 đến hàm main ().

Ưu điểm cùng nhược điểm của đệ quy

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

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

5. Lớp lưu trữ trong lập trình 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 tĩnh và vươn lên là register.

Tất cả những biến trong xây dựng C đều sở hữu 2 tính năng: các loại và lớp lưu lại trữ.

Loại đề cập đế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, kỹ năng hiển thị và thời hạn tồn tại của một biến.

Có 4 các loại lớp lưu trữ:

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

5.1 trở nên cục bộ

Các biến đổi được khai báo bên trong một khối đó là biến tự động hoặc trở nên cục bộ. Cá biến cục bộ chỉ tồn tạo 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 biến chuyển 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 điện thoại tư vấn là biến bên phía ngoài hoặc phát triển thành toàn cục. Chúng có thể được truy cập từ bất kỳ hàm làm sao trong lập trình.

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

5.3 biến đổi register

Từ khóa register dùng để làm khai báo trở nên register. Biến đổi register đã chạy nhanh hơn biến cục bộ.

Tuy nhiên, những trình biên dịch hiện đại có ưu thế là về tối ưu hóa mã nhanh chóng. Và sử dụng biến register cũng không hỗ trợ lập trình của công ty chạy nhanh hơn.

Trừ khi bạn làm việc trên khối 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 phải sử dụng những biến register.

5.4 trở thành tĩnh

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

static int i;

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

Xem thêm: Câu 1: Trường Hợp Dẫn Tới Sự Di Truyền Liên Kết Là, Trường Hợp Nào Sẽ Dẫn Tới Sự Di Truyền Liên Kết

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 điện thoại tư vấn hàm đầu tiên, quý giá của c được khởi tạo bởi 1. Quý giá của nó tạo thêm 5. Cơ hội này, cực hiếm của c sẽ là 6 với số 6 được in ấn lên màn hình

Trong lần điện thoại tư vấn thứ 2, c không được khởi tạo từ 1 nữa vì c là một trong biến tĩnh. Cơ hội này, quý hiếm của c tăng thêm 5. Và cực hiếm của c đang 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 vào C, ưu thế 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 kỹ năng về (hàm) function vào C. Chúc bạn thành công!