gpt4 book ai didi

c - "call by reference"和全局变量的区别

转载 作者:行者123 更新时间:2023-11-30 14:39:16 25 4
gpt4 key购买 nike

谁能告诉我以下两个 C 代码片段的优点或缺点吗?我有一个 int x ,我需要从几个函数访问它。将其用作引用参数(代码片段 1)还是全局变量(代码片段 2)更好?

第一个片段:

struct A {
int x;
};

void init( struct A * a ) {
a->x = 0;
}

void incx( struct A * a ) {
a->x++;
}

int main(void) {
struct A a;
init(&a);
incx(&a);
return 0;
}

第二个片段:

int x;

void init() {
x = 0;
}

void incx() {
x++;
}

int main(void) {
init();
incx();
return 0;
}

最佳答案

当您传递对象引用时,您可以更改任何您想要的对象,并且该功能是通用的。

int inc(int *v)
{
return ++(*v);
}

int v;

void foo()
{
int x;
int *y = malloc(sizeof(*y));

struct
{
int x;
int y;
}z;

inc(&x);
inc(y);
inc(&z.y);
inc(&v);
}

关于c - "call by reference"和全局变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56163794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com