English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,将向您介绍C语言编程中的函数(用户定义函数和标准库函数)。此外,您还将学习为什么在编程中使用函数。
假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解决此问题:
创建一个圆的函数
创建颜色的函数
将复杂的问题分成较小的块可以使我们的程序易于理解和重用。
C函数具有以下优点。
通过使用函数,我们可以避免在程序中一次又一次地重写相同的逻辑/代码。
我们可以在程序中以及在程序的任何位置多次调用C函数。
当大型C程序被划分为多个函数时,我们可以轻松地对其进行跟踪。
可重用性是C函数的主要成就。
但是,函数调用始终是C程序的开销。
C函数包含三个方面。
函数声明 必须在C程序中全局声明函数,以告知编译器函数名称,函数参数和返回类型。
函数调用 可以从程序中的任何位置调用函数。参数列表在函数调用和函数声明中要相同。我们必须传递与函数声明中声明的函数数量相同的函数。
函数定义 它包含要执行的实际语句。这是调用函数时控件所涉及的最重要方面。在这里,我们必须注意,该函数只能返回一个值。
الرقم | C函数方面 | 语法 |
---|---|---|
1 | 函数声明 | return_type function_name(argument_list); |
2 | 函数调用 | function_name(argument_list) |
3 | 函数定义 | return_type function_name(argument_list){function body;} |
使用C语言创建函数的语法如下:
return_type function_name(data_type parameter...){ //要执行的代码 }
C语言编程中有两种类型的函数:
标准库函数:在C头文件中声明的函数,例如scanf(),printf(),gets(),puts(),ceil(),floor()等。
用户定义的函数:C程序员自定义的函数,我们可以多次使用它。它降低了大型程序的复杂性并优化了代码。
C函数可能会也可能不会从该函数返回值。如果您不必从函数返回任何值,则将void用作返回类型。
让我们看一个简单的C函数示例,该函数不会从该函数返回任何值。
没有返回值的示例:
void hello(){ printf("hello c"); }
如果要从函数返回任何值,则需要使用任何数据类型,例如int,long,char等。返回类型取决于要从函数返回的值。
让我们看一个简单的C函数示例,该函数从该函数返回int值。
返回值示例:
int get(){ return 10; }
在上面的示例中,我们必须返回10作为值,因此返回类型为int。如果要返回浮点值(例如10.2、3.1、54.5等),则需要使用float作为方法的返回类型。
float get(){ return 10.2; }
现在,您需要调用该函数以获取该函数的值。
函数可以接受也可以不接受任何参数。它可能会或可能不会返回任何值。基于这些事实,函数调用有四个不同方面。
没有参数且没有返回值的函数
没有参数但有返回值的函数
有参数且无返回值的函数
带有参数和返回值的函数
مثال 1
#include<stdio.h> void printName(); void main () { printf("Hello "); printName(); } void printName(); { printf("ar.oldtoolbag.com"); }
إخراج النتيجة
Hello ar.oldtoolbag.com
实例2
#include<stdio.h> void sum(); void main() { printf("\nحساب مجموع الرقمين:"); sum(); } void sum(); { int a, b; printf("\nادخل رقمين"); scanf("%d %d", &a, &b); printf("总和是 %d", a+b); }
إخراج النتيجة
حساب مجموع الرقمين: ادخل رقمين 10 24 الناتج الإجمالي هو: 34
مثال 1
#include<stdio.h> int sum(); void main() { int result; printf("\nحساب مجموع الرقمين:"); result = sum(); printf("%d", result); } int sum(); { int a, b; printf("\nادخل رقمين"); scanf("%d %d", &a, &b); return a+b; }
إخراج النتيجة
حساب مجموع الرقمين: ادخل رقمين 10 24 34
مثال 2: برنامج حساب مساحة المربع
#include<stdio.h> int sum(); void main() { printf("حساب مساحة هذا المربع\n"); float area = square(); printf("مساحة المربع هي: %f\n", area); } int square() { float side; printf("ادخل طول الجانب (بالمتر):"); scanf("%f", &side); return side * side; }
إخراج النتيجة
حساب مساحة هذا المربع مساحة المربع هي: 10 ادخل طول الجانب (بالمتر): 100.000000
مثال 1
#include<stdio.h> void sum(int, int); void main() { int a, b, result; printf("\nحساب مجموع الرقمين:"); printf("\nادخل رقمين:"); scanf("%d %d", &a, &b); sum(a, b); } void sum(int a, int b) { printf("\nالناتج الإجمالي هو: %d", a+b); }
إخراج النتيجة
حساب مجموع الرقمين: ادخل رقمين 10 24 الناتج الإجمالي هو: 34
مثال 2: برنامج حساب متوسط خمس الأرقام.
#include<stdio.h> void average(int, int, int, int, int); void main() { int a, b, c, d, e; printf("\nلحساب متوسط خمس الأرقام:"); printf("\nادخل خمس أرقام:"); scanf("%d %d %d %d %d", &a, &b, &c, &d, &e); average(a, b, c, d, e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf("متوسط خمس الأرقام هو: %f", avg); }
إخراج النتيجة
لحساب متوسط خمس الأرقام: ادخل خمس أرقام: 10 20 30 40 50 متوسط خمس الأرقام هو: 30.000000
مثال 1
#include<stdio.h> int sum(int, int); void main() { int a, b, result; printf("\nحساب مجموع الرقمين:"); printf("\nادخل رقمين:"); scanf("%d %d", &a, &b); result = sum(a, b); printf("\nالناتج الإجمالي هو: %d", result); } int sum(int a, int b) { return a+b; }
إخراج النتيجة
حساب مجموع الرقمين: ادخل رقمين: 10 20 الناتج الإجمالي هو: 30
مثال2: برنامج لتحقق ما إذا كان الرقم زوجياً أو فردياً
#include<stdio.h> int even_odd(int); void main() { int n,flag=0; printf("\nتحقق ما إذا كان الرقم زوجياً أو فردياً"); printf("\nأدخل الرقم: "); scanf("%d",&n); flag = even_odd(n); if(flag == 0) { printf("\nالرقم هو عدد فردي"); } else { printf("\nهذا الرقم هو عدد زوجي"); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
إخراج النتيجة
تحقق ما إذا كان الرقم زوجياً أو فردياً أدخل الرقم: 100 هذا الرقم هو عدد زوجي
وظائف مكتبة القياسية هي وظائف مدمجة في لغة C، وتقسم وتوضع في مواقع عامة تسمى المكتبات. هذه الوظائف تستخدم للتنفيذ بعض العمليات المحددة. على سبيل المثال، printf هي وظيفة مكتبة تستخدم للطباعة على الشاشة. يتم إنشاء وظائف المكتبة من قبل مصممي الماكينة..hتعريف في مختلف ملفات الرأس. نحتاج إلى تضمين هذه الملفات الرأس في البرنامج للاستفادة من المكتبات المحددة في هذه الملفات الرأس. على سبيل المثال، لاستخدام وظائف المكتبة مثل printf / scanf، نحتاج إلى تضمين stdio.h في البرنامج، وهو ملف الرأس الذي يحتوي على جميع وظائف الإدخال/الإخراج المعيارية.
الجدول أدناه يبين أكثر ملفات الرأس استخدماً.
الرقم | ملف الرأس | الوصف |
---|---|---|
1 | stdio.h | هذا هو ملف الرأس المعياري للإدخال/الإخراج. يحتوي على جميع وظائف مكتبة الإدخال/الإخراج المعيارية. |
2 | conio.h | هذا هو ملف الرأس للإدخال/الإخراج على الشاشة. |
3 | string.h | يحتوي على جميع وظائف مكتبة الأنماط مثل gets()،puts() وغيرها. |
4 | stdlib.h | يحتوي هذا ملف الرأس على جميع الوظائف العامة للمكتبة مثل malloc()،calloc()،exit() وغيرها. |
5 | math.h | يحتوي هذا ملف الرأس على جميع الوظائف المتعلقة بالعمليات الرياضية مثل sqrt()،pow() وغيرها. |
6 | time.h | يحتوي هذا ملف الرأس على جميع الوظائف المتعلقة بالوقت. |
7 | ctype.h | يحتوي هذا ملف الرأس على جميع وظائف معالجة الحروف. |
8 | stdarg.h | وظائف متغيرات المعاملات معرفت في هذا ملف الرأس. |
9 | signal.h | جميع وظائف معالجة الإشارات معرفت في هذا ملف الرأس. |
10 | setjmp.h | الملف يحتوي على جميع الوظائف الجاري التحويل. |
11 | locale.h | يحتوي هذا الملف على وظائف بيئة اللغة. |
12 | errno.h | يحتوي هذا الملف على وظائف معالجة الأخطاء. |
13 | assert.h | يحتوي هذا الملف على وظائف التشخيص. |
زيارة هذه الصفحات للحصول على معلومات إضافية: