C语言中的Pass-by-name实现

C语言中的Pass-by-name实现,c,parameters,pass-by-name,C,Parameters,Pass By Name,我知道C使用按值传递,我们可以在指针的帮助下模拟按引用传递。但是,例如,为了计算一个简单的数学表达式,我如何在C中实现按名称传递(这是一种惰性计算,但不完全是这样) C是唯一的传递值。您不能通过引用或名称传递。使用预处理器,您可以进行各种攻击,但不能使用C语言 有时,人们称传递指针为“按引用传递”,但事实并非如此。指针像其他任何东西一样通过值传递。C++是另一个故事,但你问了C.P/P> 您可能还对C是唯一的传递值感兴趣。您不能通过引用或名称传递。使用预处理器,您可以进行各种攻击,但不能使用C语

我知道C使用按值传递,我们可以在指针的帮助下模拟按引用传递。但是,例如,为了计算一个简单的数学表达式,我如何在C中实现按名称传递(这是一种惰性计算,但不完全是这样)

C是唯一的传递值。您不能通过引用或名称传递。使用预处理器,您可以进行各种攻击,但不能使用C语言

有时,人们称传递指针为“按引用传递”,但事实并非如此。指针像其他任何东西一样通过值传递。C++是另一个故事,但你问了C.P/P>
您可能还对

C是唯一的传递值感兴趣。您不能通过引用或名称传递。使用预处理器,您可以进行各种攻击,但不能使用C语言

有时,人们称传递指针为“按引用传递”,但事实并非如此。指针像其他任何东西一样通过值传递。C++是另一个故事,但你问了C.P/P>

您可能还对类似函数的预处理器宏使用的参数替换有时被描述为“按名称传递”。

类似函数的预处理器宏使用的参数替换有时被描述为“按名称传递”。

请解释“按名称传递”是什么意思,这与“传递值”和“传递”有什么不同reference@RishikeshRaje嗯,倒不是。在这里搜索。我自己从未听说过,但LMGTFY给了我:@Olaf,我的意思是模拟。可以使用支持嵌套函数的gcc扩展来实现这一点,然后可以将其作为参数传递。然后调用方在需要参数时调用函数。但这不是可移植的,也不是真正的C语言,所以它只能在启用扩展的情况下与gcc一起工作。我想您可以使用同时包含数据指针和函数指针的结构。不管你怎么做,它都是丑陋的。请解释一下你所说的“通过名称传递”是什么意思,以及它与“通过值传递”和“通过值传递”有何不同reference@RishikeshRaje嗯,倒不是。在这里搜索。我自己从未听说过,但LMGTFY给了我:@Olaf,我的意思是模拟。可以使用支持嵌套函数的gcc扩展来实现这一点,然后可以将其作为参数传递。然后调用方在需要参数时调用函数。但这不是可移植的,也不是真正的C语言,所以它只能在启用扩展的情况下与gcc一起工作。我想您可以使用同时包含数据指针和函数指针的结构。不管你怎么做都很难看。对不起,你不能实现按引用传递,但这不是太消极了吗?我很确定你可以通过使用指针来模拟按引用传递。#主题外:
C只是按值传递。
。我不知道。。。我认为C是一种语言POf课程您可以实现通过引用传递。问题是它适用于什么。给定
void func(int*x)
,指针地址按值传递,但指向的数据按引用传递。否则,如果您想挑剔,计算机只能通过将值放入堆栈或索引寄存器来向函数传递地址。计算机中的任何位置都不存在按引用传递。请注意,OP更改了该问题,这使得您的部分答案无效。对不起,您无法实现按引用传递,但这不是太消极吗?我非常确定您可以使用指针模拟按引用传递。#offtopic:
C只是按值传递。
。我不知道。。。我认为C是一种语言POf课程您可以实现通过引用传递。问题是它适用于什么。给定
void func(int*x)
,指针地址按值传递,但指向的数据按引用传递。否则,如果您想挑剔,计算机只能通过将值放入堆栈或索引寄存器来向函数传递地址。计算机中任何地方都不存在通过引用。请注意,OP更改了问题,这使得您的部分答案无效。您是否有任何示例来证明这一点?例如,减去两个变量?我试过砰砰的一声,但我没能解决……你有什么例子可以证明这一点吗?例如,减去两个变量?我试过捶胸顿足,但没能成功。。