【发布时间】:2020-09-28 05:17:28
【问题描述】:
我的问题是char *string1 不能被修改,那么为什么他们有类似的语法
char *strcat(char *string1, const char *string2) ??
#include<stdio.h>
#include<string.h>
int main(void)
{
const char *p="Everyone";
char *a="Hello ";
printf("%s",strcat(a,p));
return 0;
}
输出:分段错误(核心转储)
#include<stdio.h>
#include<string.h>
int main(void)
{
const char *p="Everyone";
char a[20]="Hello ";
printf("%s",strcat(a,p));
return 0;
}
输出:大家好
在sn-p 1中,char*存储在只读内存中,所以我们不能修改(这里修改是连接)我认为这就是它显示分段错误的原因
但strcat() 的语法是char *strcat(char *string1, const char *string2)。
【问题讨论】:
-
那么问题是什么?
-
有什么问题?在第一个示例中,您尝试修改字符串文字,这会导致未定义的行为。真的没什么好说的了。