Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中,我可以声明一个常量字符数组吗?_C_Arrays_Character - Fatal编程技术网

在C语言中,我可以声明一个常量字符数组吗?

在C语言中,我可以声明一个常量字符数组吗?,c,arrays,character,C,Arrays,Character,我正在处理一个表示符号变化的字符串。我成功地使用了下面注释掉的字符串,但更喜欢使用常量字符数组UP=“UP/0/0”和DOWN=“DOWN”的简单if-else语句 有人知道一种简单的方法来声明这样的常量值吗 char direction[5]; // declares char array to signify sign change if (value - price1 > - 0.005) { // adjusts for noise near 0

我正在处理一个表示符号变化的字符串。我成功地使用了下面注释掉的字符串,但更喜欢使用常量字符数组UP=“UP/0/0”和DOWN=“DOWN”的简单if-else语句

有人知道一种简单的方法来声明这样的常量值吗

    char direction[5]; // declares char array to signify sign change    
    if (value - price1 > - 0.005) { // adjusts for noise near 0
        direction = UP;
    }
    else direction = DOWN;

    // update price-change direction string
//      if (value - price1 > - 0.005) { // adjusts for noise near 0
//          direction[0] = 'u';
//          direction[1] = 'p';
//          direction[2] = 00; // set character to null value
//          direction[3] = 00;
//      }
//      
//      int[4] var_name 
//      else {
//          direction[0] = 'd';
//          direction[1] = 'o';
//          direction[2] = 'w';
//          direction[3] = 'n';
//      }

如果以后不修改字符串,可以这样做:

const char *direction:
if (value - price1 > - 0.005) { // adjusts for noise near 0
    direction = UP;
}
else
    direction = DOWN;

如果以后不修改字符串,可以这样做:

const char *direction:
if (value - price1 > - 0.005) { // adjusts for noise near 0
    direction = UP;
}
else
    direction = DOWN;

您不能这样分配,但您可以:

strcpy(direction, UP);

strcpy(direction, DOWN);

显然,要小心不要使缓冲区溢出。如果这些是唯一可能的来源,您就可以了。

您不能这样分配,但您可以:

strcpy(direction, UP);

strcpy(direction, DOWN);
显然,要小心不要使缓冲区溢出。如果这些是唯一可能的来源,您就没事了。

考虑使用:

const char up_string[] = "UP";
const char down_string[] = "DOWN";
char *direction;
direction = (value - price1 > - 0.005) ? up_string : down_string;
然后,您可以将方向仅仅作为指向这些位置之一的指针(与使用strcpy相反)

考虑使用:

const char up_string[] = "UP";
const char down_string[] = "DOWN";
char *direction;
direction = (value - price1 > - 0.005) ? up_string : down_string;

然后,您可以将方向仅仅作为指向这些位置之一的指针(与使用strcpy相反)

我应该补充一点,这段代码在一个循环中。所以价值会改变,方向也会不断改变,这很好。您没有编辑字符串的内容。您只是重新分配了指针。@Evan,可以这样说,例如
direction=UP;方向=向下任意次数。你永远不能说方向[0]='G'
(或者以任何其他方式写入
方向
),如果您这样设置的话。有趣。那么我应该把这个代码放在哪里呢?在循环内?假设在循环后不使用
方向
,可以将其放置在循环内。我要补充的一点是,此代码在循环内。所以价值会改变,方向也会不断改变,这很好。您没有编辑字符串的内容。您只是重新分配了指针。@Evan,可以这样说,例如
direction=UP;方向=向下任意次数。你永远不能说方向[0]='G'
(或者以任何其他方式写入
方向
),如果您这样设置的话。有趣。那么我应该把这个代码放在哪里呢?在循环内?假设在循环后不使用
方向
,则可以将其放置在循环内。