代码之家  ›  专栏  ›  技术社区  ›  user5155804

条件表达式中未赋值的指针是否变为空?

  •  0
  • user5155804  · 技术社区  · 7 年前

    link 表示条件表达式中的第二个和第三个操作数必须是兼容类型。它还表示第二个和第三个指针操作数之一可能是 NULL 无效的

    例子: a == a? pointer1 : pointer2;

    a == a 是真的吗 pointer1 得到评估并 pointer2 未进行评估。那么,这是 指针2 哪个转弯 .

    1 回复  |  直到 7 年前
        1
  •  0
  •   kocica    7 年前

    那么这是否意味着未赋值的指针变为NULL?

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

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

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

    因为其中一个是 int* void* .


    你认为在这种情况下

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

    变量 intvar2 无效的 ,但事实并非如此。唯一被修改的变量是 pointer 并指向变量 intvar1