2 سال پیش / خواندن دقیقه

ساختار و تابع در برنامه نویسی C با مثالهای کاربردی

ساختار و تابع در برنامه نویسی C با مثالهای کاربردی

در این آموزش به کمک مثال با نحوه ارسال متغیر ساختار به عنوان آرگومان به تابع و همچنین بازگشت ساختار از تابع در برنامه نویسی C آشنا خواهید شد.

مشابه متغیرهای داخلی می توانید متغیرهای ساختار را نیز به یک تابع ارسال کنید.

ارسال ساختار به تابع

توصیه می کنیم قبل از یادگیری شیوه ارسال ساختار به تابع، آموزش های زیر را مرور کنید.

 

  • ساختارها در برنامه نویسی C
  • تابع در برنامه نویسی C
  • تابع تعریف شده توسط کاربر در C

ارسال ساختارها به تابع

#include <stdio.h>
struct student {
char name[50];
int age;
};
// نمونه اولیه تابع
void display(struct student s);
int main() {
struct student s1;
printf(“Enter name: “);
// خواندن رشته ورودی از کاربر تا زمانیکه کاربر اینتر بزند
// کاراکتر اینتر است \n
scanf(“%[^\n]%*c”, s1.name);
printf(“Enter age: “);
scanf(“%d”, &s1.age);
display(s1); // ارسال ساختار به عنوان آرگومان
return 0;
}
void display(struct student s) {
printf(“\nDisplaying information\n”);
printf(“Name: %s”, s.name);
printf(“\nAge: %d”, s.age);
}

خروجی

Enter name: Bond

Enter age: 13

Displaying information

Name: Bond

Age: 13

در اینجا، متغیر ساختار s1 از نوع struct student تعریف شده است. متغیر با دستور ;(display(s1 به تابع ()display ارسال میشود.

بازگشت ساختار از تابع

در برنامه زیر نحوه بازگشت ساختار از تابع نوشته شده است:

#include <stdio.h>
struct student
{
char name[50];
int age;
};
// نمونه اولیه تابع
struct student getInformation();
int main()
{
struct student s;
s = getInformation();
printf(“\nDisplaying information\n”);
printf(“Name: %s”, s.name);
printf(“\nRoll: %d”, s.age);
return 0;
}
struct student getInformation()
{
struct student s1;
printf(“Enter name: “);
scanf (“%[^\n]%*c”, s1.name);
printf(“Enter age: “);
scanf(“%d”, &s1.age);
return s1;
}

در اینجا، تابع ()getInformation با دستور ;()s = getInformation فراخوانی می شود. این تابع ساختاری از نوع struct student برمی گرداند. ساختار برگشتی از ابن تابع در تابع ()main نمایش داده می شود.

توجه داشته باشید که نوع متغیری هم که مقدار بازگشتی تابع در آن ذخیره می شود باید از نوع struct student است.

ارسال ساختار با ارجاع

علاوه بر این با استفاده از ارجاع نیز می توانید ساختار را به تابع ارسال کنید (مشابه با ارسال متغیرها از نوع داخلی). پیشنهاد میکنیم آموزش ارسال با ارجاع را مطالعه کنید.

در ارسال با ارجاع، آدرس متغیر ساختار به تابع ارسال می شود.

#include <stdio.h>
typedef struct Complex
{
float real;
float imag;
} complex;
void addNumbers(complex c1, complex c2, complex *result);
int main()
{
complex c1, c2, result;
printf(“For first number,\n”);
printf(“Enter real part: “);
scanf(“%f”, &c1.real);
printf(“Enter imaginary part: “);
scanf(“%f”, &c1.imag);
printf(“For second number, \n”);
printf(“Enter real part: “);
scanf(“%f”, &c2.real);
printf(“Enter imaginary part: “);
scanf(“%f”, &c2.imag);
addNumbers(c1, c2, &result);
printf(“\nresult.real = %.1f\n”, result.real);
printf(“result.imag = %.1f”, result.imag);
return 0;
}
void addNumbers(complex c1, complex c2, complex *result)
{
result->real = c1.real + c2.real;
result->imag = c1.imag + c2.imag;
}

خروجی

For first number,

Enter real part: 1.1

Enter imaginary part: -2.4

For second number,

Enter real part: 3.4

Enter imaginary part: -3.2

result.real = 4.5

result.imag = -5.6

در این برنامه، سه متغیر ساختار c1 ، c2 و آدرس result به تابع ()addNumbers ارسال می شود. result با ارجاع ارسال می شود.

با تغییر متغیر result در داخل تابع، متغیر result در تابع ()main نیز متناسب با آن تغییر می کند.


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع