请就以下输出向我提供建议:
int main()
{
char ***x = "jjhljlhjlhjl";
char ***q = "asddfwerwerw";
**q = **x;
printf("x:%s\n",x);
printf("q:%s\n",q);
}输出:1分段故障
发布于 2013-09-25 09:52:52
这是你应该拥有的:
#include <stdio.h>
int main(void) {
char *x = "jjhljlhjlhjl";
char *q = "asddfwerwerw";
q = x;
printf("x:%s\n",x);
printf("q:%s\n",q);
return 0;
}如果你想初始化一个字符串,使用char *x不要使用***x。这意味着指向字符的指针。希望这能有所帮助。
发布于 2013-09-25 09:50:11
“分割错误”不是一种输出,它表明你的程序已经崩溃。
这并不奇怪,因为字符串文字是char*,而不是char***。尝试双重取消对此类指针的限制是未定义的行为,因为它将字符串文本的内容重新解释为指向char的指针。这就是导致崩溃的原因。
您可以按如下方式修改您的程序以使其合法:
int main() {
char *x = "jjhljlhjlhjl";
char tmp[] = "asddfwerwerw";
char *q = tmp;
*q = *x;
// This will produce an output that should be easy to explain:
printf("x:%s\n",x);
printf("q:%s\n",q);
}https://stackoverflow.com/questions/18994855
复制相似问题