当前位置: 首页 > 工具软件 > CStruct > 使用案例 >

c语言结构体函数传递方式,c-将struct传递给函数

龙德润
2023-12-01

这是通过引用传递struct的方法。 这意味着您的函数可以访问函数外部的struct并修改其值。 您可以通过将指向结构的指针传递给函数来完成此操作。

#include

/* card structure definition */

struct card

{

int face; // define pointer face

}; // end structure card

typedef struct card Card ;

/* prototype */

void passByReference(Card *c) ;

int main(void)

{

Card c ;

c.face = 1 ;

Card *cptr = &c ; // pointer to Card c

printf("The value of c before function passing = %d\n", c.face);

printf("The value of cptr before function = %d\n",cptr->face);

passByReference(cptr);

printf("The value of c after function passing = %d\n", c.face);

return 0 ; // successfully ran program

}

void passByReference(Card *c)

{

c->face = 4;

}

这就是通过值传递struct的方式,以便您的函数接收struct的副本,并且无法访问外部结构对其进行修改。 外部是指功能之外。

#include

/* global card structure definition */

struct card

{

int face ; // define pointer face

};// end structure card

typedef struct card Card ;

/* function prototypes */

void passByValue(Card c);

int main(void)

{

Card c ;

c.face = 1;

printf("c.face before passByValue() = %d\n", c.face);

passByValue(c);

printf("c.face after passByValue() = %d\n",c.face);

printf("As you can see the value of c did not change\n");

printf("\nand the Card c inside the function has been destroyed"

"\n(no longer in memory)");

}

void passByValue(Card c)

{

c.face = 5;

}

 类似资料: