为什么我可以像这样传递字符串参数?这种款式安全吗? 我在XCu码中使用两个字符串作为参数,使用C++。我在XCode中尝试了这个方法,效果很好。但这在所有平台上都安全吗 #include <iostream> void log_person(const char* name_and_number){ printf("name and number : %s.\n", name_and_number); } int main(int argc, const char * argv[]) { log_person("jim" "123456789"); return 0; } #包括 无效日志人(常量字符*名称和编号){ printf(“名称和编号:%s.\n”,名称和编号); } int main(int argc,const char*argv[]{ 日志记录人(“jim”123456789); 返回0; }

为什么我可以像这样传递字符串参数?这种款式安全吗? 我在XCu码中使用两个字符串作为参数,使用C++。我在XCode中尝试了这个方法,效果很好。但这在所有平台上都安全吗 #include <iostream> void log_person(const char* name_and_number){ printf("name and number : %s.\n", name_and_number); } int main(int argc, const char * argv[]) { log_person("jim" "123456789"); return 0; } #包括 无效日志人(常量字符*名称和编号){ printf(“名称和编号:%s.\n”,名称和编号); } int main(int argc,const char*argv[]{ 日志记录人(“jim”123456789); 返回0; },c++,string,C++,String,您正在传递一个字符串。这个 "Foo" "Bar" 完全等同于 "FooBar" 所以你的电话和我的一样 log_person("jim123456789"); 这是标准C++,所以在任何符合的实现上都是“安全的”。参见C++11标准中的2.14.5/13: 2.14.5字符串文字量 13在翻译阶段6(2.2)中,相邻的字符串文字被连接起来 我很困惑。你是说编者把这种风格当作一个字符串吗?@nosources

您正在传递一个字符串。这个

"Foo" "Bar"
完全等同于

"FooBar"
所以你的电话和我的一样

log_person("jim123456789");

这是标准C++,所以在任何符合的实现上都是“安全的”。参见C++11标准中的2.14.5/13:

2.14.5字符串文字量

13在翻译阶段6(2.2)中,相邻的字符串文字被连接起来


我很困惑。你是说编者把这种风格当作一个字符串吗?@nosources是的,没错。因为语言指定了它,编译器实现了语言。谢谢你的回答。你能告诉我在哪里可以找到关于这个规范的更多信息吗?@源代码C++标准。我加了一句话,在你的帮助下,我在书中发现,我想知道你是怎么发现的,你读过整本书吗?