如何将结构的地址作为参数传递给C函数?
可以通过三种方式将结构的值从一个函数传递到另一个函数。它们如下-
将单个成员作为函数的参数传递。
将整个结构作为参数传递给函数。
将结构的地址作为函数的参数传递。
现在,让我们了解如何将结构的地址作为函数的参数传递。
结构的地址作为参数传递给函数。
它收集在指向函数标头中结构的指针中。
好处
将结构的地址作为参数传递给函数的优点如下:
无需浪费内存,因为无需再次创建副本。
无需返回值,因为该函数可以间接访问整个结构,然后对其进行处理。
例子1
以下程序显示如何将结构的地址作为参数传递给函数-
#include<stdio.h>输出结果struct date{
int day;
char month[10];
int year;
};
int main(){
struct date d;
printf("enter the day,month and year:");
scanf("%d%s%d",&d.day,d.month,&d.year);
display(&d);
return 0;
}
void display(struct date *p){
printf("day=%d\n",p->day);
printf("month=%s\n",p->month);
printf("year=%d\n",p->year);
}
执行以上程序后,将产生以下结果-
enter the day, month and year:20 MAR 2021day=20
month=MAR
year=2021
例子2
下面给出的C程序通过调用整个函数作为参数来演示结构和函数。由于这种调用函数的方法,因此不会浪费内存,因为我们不需要再次复制并返回值。
#include<stdio.h>输出结果//Declaring structure//
struct student{
char Name[100];
int Age;
float Level;
char Grade[50];
char temp;
}s[5];
//Declaring and returning Function//
void show(struct student *p){
//Declaring variable for For loop within the function//
int i;
//For loop for printing O/p//
for(i=1;i<3;i++){
printf("The Name of student %d is : %s\n",i,p->Name);
printf("The Age of student %d is : %d\n",i,p->Age);
printf("The Level of student %d is : %f\n",i,p->Level);
printf("The Grade of student %d is : %s\n",i,p->Grade);
p++;
}
}
void main(){
//Declaring variable for for loop//
int i;
//Declaring structure with pointer//
struct student *p;
//Reading User I/p//
for(i=0;i<2;i++){
printf("Enter the Name of student %d : ",i+1);
gets(s[i].Name);
printf("Enter the Age of student %d : ",i+1);
scanf("%d",&s[i].Age);
printf("Enter the Level of student %d :",i+1);
scanf("%f",&s[i].Level);
scanf("%c",&s[i].temp);//Clearing Buffer//
printf("Enter the Grade of student %d :",i+1);
gets(s[i].Grade);
}
//Assigning pointer to structure//
p=&s;
//Calling function//
show(&s);
}
执行以上程序后,将产生以下结果-
Enter the Name of student 1 : LuckyEnter the Age of student 1 : 27
Enter the Level of student 1 :2
Enter the Grade of student 1 :A
Enter the Name of student 2 : Pinky
Enter the Age of student 2 : 29
Enter the Level of student 2 :1
Enter the Grade of student 2 :B
The Name of student 1 is : Lucky
The Age of student 1 is : 27
The Level of student 1 is : 2.000000
The Grade of student 1 is : A
The Name of student 2 is : Pinky
The Age of student 2 is : 29
The Level of student 2 is : 1.000000
The Grade of student 2 is : B
以上是 如何将结构的地址作为参数传递给C函数? 的全部内容, 来源链接: utcz.com/z/333783.html