gpt4 book ai didi

c - 在 C 中解释 "if (result1) *result1 = t2"语句时遇到问题

转载 作者:行者123 更新时间:2023-12-01 16:53:11 24 4
gpt4 key购买 nike

我不是 C 程序员,但我正在将 C 程序翻译为 Delphi。一切都很顺利,除了我无法弄清楚这样的语句的含义:

if (result1)
*result1 = t2;

似乎总是要执行分配,然后测试某些条件?

完整的 C 程序列于 http://en.wikipedia.org/wiki/Talk%3ATrilateration如果有帮助的话。

最佳答案

在 C 语言中,整数和 bool 值之间存在同化:任何非零的数字都表示 true。在 C 99 中 bool添加了类型(遵循 C++ 的步骤),但是这些如此常见的用途很难根除(并且还有很多遗留源代码使用此约定)。

这句话的真正含义是:

if ( result1 != NULL ) {
*result1 = t2;
}

这意味着 result1是一个指针,如果该行之前的可能内存分配成功,则它用于存储值 t2 .

那么,这与指针有什么关系呢?嗯,指针基本上是一个整数(内存地址),而 NULL(很常见,但并不总是)为零。所以“result1”可以解释为 result1 != NULL甚至result1 != 0 .

最后NULL当内存分配(或任何其他内存操作)不成功时返回,因此在使用指针之前测试指针是否处于事件状态(即它不是 NULL )是很常见的。

关于c - 在 C 中解释 "if (result1) *result1 = t2"语句时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336717/

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