我正在尝试编写一个该函数const char *作为参数,我无法弄清楚如何以有用的方式将这种数据传递给函数.如果我有功能:
void tokenize(const char * c) { }
Run Code Online (Sandbox Code Playgroud)
我想用硬编码的值来调用这个函数,比如说反斜杠,这个问题的最佳方法是什么?如何将硬编码值转换为const char *?
使用字符串文字代替const char *参数是完全合法的:
tokenize("\\");
Run Code Online (Sandbox Code Playgroud)
更具说明性的示例是存储指向该字符串的指针,然后传递该指针:
const char *token = "\\";
tokenize(token);
Run Code Online (Sandbox Code Playgroud)
但是,char *即使编译器允许,字符串文字也不兼容.这与存储字符串文字的方式有关 - 它们通常位于内存的只读区域,并且尝试写入它们将导致未定义的行为,很可能是某种保护错误.