c - 条件表达式中未计算的指针是否会变为 void?

标签 c pointers conditional-operator

这个link表示条件表达式中的第二个和第三个操作数必须是兼容的类型。它还表示第二个和第三个指针操作数之一可能是 NULL。那么这是否意味着未计算的指针将变为 NULL?

示例:a == a?指针1:指针2;

听到 a == a 为 true,因此 pointer1 被求值,而 pointer2 则不求值。所以,pointer2 会变成 NULL

最佳答案

So does that mean the unevaluated pointer turns NULL?

不,它解释了第二个和第三个操作数可以具有不同类型的异常。其中之一可以是NULL

int * pointer = (1 == 1) ? NULL : &intvar;

int * pointer = (1 == 1) ? &intvar : NULL;

因为其中一个是 int* ,第二个是 void*

<小时/>

你认为在这种情况下

int * pointer = (1 == 1) ? &intvar1 : &intvar2;

变量intvar2变成了NULL,但事实并非如此。唯一被修改的变量是pointer,它指向变量intvar1

关于c - 条件表达式中未计算的指针是否会变为 void?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648502/

相关文章:

c - 编写我自己的查找程序时出现段错误

C - 使用 strtok() 将文件从命令行管道传输到 C 程序

c - 如何修改已传递给 C 函数的指针?

c# - 具有 Nullable<value> 类型的条件运算符赋值?

c - 使用基本C语言输出二维数组

c - 如何在不使用索引的情况下使用二维数组?

c - 按值填充值 a char *

c - 为什么下面的C代码是非法的?

javascript - 如何使用条件运算符分配ID?

c++ - 如何使 '<?=' 可用于 C++?