C++ const char*与字符串文字的使用

C++ const char*与字符串文字的使用,c++,linux,string,char,constants,C++,Linux,String,Char,Constants,我正在使用一个外部Modbus库(用C编写)通过串行连接从Linux机器连接到Microtroller Modbus从机。我还使用wxWidgets在Linux机器上创建一个应用程序,它在后台运行Modbus主机 其中一个Modbus功能接受Modbus主机应连接的串行端口的名称。在我的Linux机器上,这是/dev/ttyS4。在我使用的函数中,参数类型定义为const char*。当我将参数作为字符串文本传递时,即/dev/ttyS4,函数工作正常。但是,当我第一次定义变量时,如下所示: c

我正在使用一个外部Modbus库(用C编写)通过串行连接从Linux机器连接到Microtroller Modbus从机。我还使用wxWidgets在Linux机器上创建一个应用程序,它在后台运行Modbus主机

其中一个Modbus功能接受Modbus主机应连接的串行端口的名称。在我的Linux机器上,这是/dev/ttyS4。在我使用的函数中,参数类型定义为const char*。当我将参数作为字符串文本传递时,即/dev/ttyS4,函数工作正常。但是,当我第一次定义变量时,如下所示:

const char mbPort[]={'/','d','e','v','/','t','t','y','S','4'}

然后把这个变量传递给函数,它就不起作用了——我不知道为什么会这样。在Windows中以类似的方式传递变量时,它工作得很好。在Windows中,我的mbPort变量如下所示:

const char mbPort[]={'\\'','\'','.','\'','\'','\\'','C','O','M','5'}

所以现在我不确定这是否是我代码中的错误,或者这是否与我正在使用的操作系统有关。以下是我正在使用的Modbus函数的声明:

modbus_t* modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);

任何帮助都将不胜感激。

在初始值设定项列表的末尾添加值“\0”。也许在某些编译器构建中,内存中的数据后面恰好有一个零,但您不能依赖这一事实

请注意,/dev/ttyS4将以null结尾,而{'/'、'd','e','v','/'、't','t','y','S','4}则不是。感谢您的快速回复。您完全正确,将“\0”添加到我的变量末尾修复了问题!