Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Concatenation - Fatal编程技术网

在C中向变量名添加常量

在C中向变量名添加常量,c,variables,concatenation,C,Variables,Concatenation,我想问的是,是否有一种方法可以声明一个带有索引的变量(我通过我的程序获得)并将其附加到我的变量名中。例如: char mq_[index] = "Typical string"; 其中字符的名称将是mq_1,mq_2,依此类推。。 这可能吗?答案是否定的。除非变量声明为extern,以便链接器需要知道它,否则程序在运行时完全无法使用变量的名称(可能存在用于调试器的符号表除外) 如果试图向变量添加索引,为什么不使用数组呢 答案是否定的。除非变量声明为extern,以便链接器需要了解它,否则程序在

我想问的是,是否有一种方法可以声明一个带有索引的变量(我通过我的程序获得)并将其附加到我的变量名中。例如:

char mq_[index] = "Typical string";
其中字符的名称将是
mq_1
mq_2
,依此类推。。
这可能吗?

答案是否定的。除非变量声明为
extern
,以便链接器需要知道它,否则程序在运行时完全无法使用变量的名称(可能存在用于调试器的符号表除外)


如果试图向变量添加索引,为什么不使用数组呢

答案是否定的。除非变量声明为
extern
,以便链接器需要了解它,否则程序在运行时完全无法使用该变量的名称(可能存在用于调试器的符号表除外)

如果试图向变量添加索引,为什么不使用数组呢

没有

执行C代码时(通常)变量名不存在,因为编译器会删除它们

C不是典型的“动态”语言,您不能生成源代码并在运行时对其进行评估,因为典型的运行时环境不包括C编译器

如果需要可以索引的字符串数组,请使用字符串数组和索引:

const char *strings[] = { "Hello", "these", "are", "strings" };
const int index = 2;

puts(strings[index]);
这将打印数组中的第三个元素。请记住,C数组从0开始索引。

执行C代码时(通常)变量名不存在,因为编译器会删除它们

C不是典型的“动态”语言,您不能生成源代码并在运行时对其进行评估,因为典型的运行时环境不包括C编译器

如果需要可以索引的字符串数组,请使用字符串数组和索引:

const char *strings[] = { "Hello", "these", "are", "strings" };
const int index = 2;

puts(strings[index]);

这将打印数组中的第三个元素。请记住,C数组从0开始索引。

您不能动态定义变量名。在您的情况下,应该使用数组

char *mq[] = {
    "Typical string",
    "Typical string",
    "Typical string"
};

printf("%s", mq[1]);

不能动态定义变量名。在您的情况下,应该使用数组

char *mq[] = {
    "Typical string",
    "Typical string",
    "Typical string"
};

printf("%s", mq[1]);

听起来你想要一个array@user694733在试图澄清这个问题时,我想我只是把自己弄糊涂了!这听起来像是一个错误。您真正想要解决的是什么?出于某种原因,每个初学者都会在某个时候产生这样的想法,即他们需要根据运行时事件更改变量名。这样做没有任何意义,因为变量名的存在只是为了程序员在编写程序时的利益。变量名没有其他用途,也不是可执行文件的一部分。你问什么?听起来你想要一个array@user694733在试图澄清这个问题时,我想我只是把自己弄糊涂了!这听起来像是一个错误。您真正想要解决的是什么?出于某种原因,每个初学者都会在某个时候产生这样的想法,即他们需要根据运行时事件更改变量名。这样做没有任何意义,因为变量名的存在只是为了程序员在编写程序时的利益。变量名没有其他用途,并且它们不是可执行文件的一部分。你有什么问题吗?链接仍然在运行时之前,即使是
extern
ed变量名在代码运行时也不会出现。链接器解析引用。链接仍在运行时之前,即使在代码运行时,
extern
ed变量名也不会出现。链接器解析引用。如果我想将其定义为消息队列数组,是否可能?我试着一起抓取一些代码,但是很疯狂。告诉我们你到底想做什么,也许我们可以更容易地帮助你。例如,如果您要使通信成为两个进程,那么您可以使用IPC()而不是重新发明轮子。如果我想将其定义为消息队列数组,是否可能?我试着一起抓取一些代码,但是很疯狂。告诉我们你到底想做什么,也许我们可以更容易地帮助你。例如,如果您想让两个进程通信,那么您可以使用IPC()而不是重新发明轮子。