使用' dummy'指针只是为了比较

时间:2015-06-19 23:37:57

标签: c pointers

我有一个包含字符串(字符指针)的结构。

此字符串/数组应采用以下形式之一:

  1. 包含实际的字符串数据
  2. 没有实际数据,只是应该能够在名为STATE_1
  3. 的内容中展示它
  4. 与上述相同,但STATE_2
  5. 我希望能够检查一下'字符串'在STATE_1STATE_2中,并且与包含实际数据的内容有所不同。如果我只有一个状态,我可以使用空指针。

    我尝试了类似的东西,但它会导致未定义的行为。

    char *STATE_1, *STATE_2;
    ...
    if(tstruct.string == STATE_1 || tstruct.string == STATE_2){
        ...
    }
    

3 个答案:

答案 0 :(得分:4)

保留两个静态地址。它们保证是独一无二的。

static char STATE_1[1];
static char STATE_2[1];

if (tstruct.string == STATE_1 || tstruct.string == STATE_2) {
    ...
}

这些可能是全局变量,也可能是静态本地变量。

答案 1 :(得分:2)

我不确定,但我想你想要这样的东西:

char STATE_1, STATE_2; // dummy 'char's for 2. and 3.

if (tstruct.string == &STATE_1 || tstruct.string == &STATE_2) {
   // ...
}

答案 2 :(得分:0)

有多种方法可以做到这一点:

1)你可以在结构中有一个类型的变量 enum stringState,可以是0,1或2(0表示String有数据,1表示State-1,2表示State-2)。缺点是每次更改数据时都必须修改stringState,如果忘记这样做,就会产生后果。

2)字符串本身可以具有值“STATE1”或“STATE2”,然后您可以使用“STATE1”或“STATE2”执行strcmp,否则它将具有实际数据(STATE0)。