#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void getstr(char *p)
{
p=(char *)malloc(100);
strcpy(p,"TCL");}
int main()
{
char p1[]="abc" ,p2[]="ABC", str[8]="xyz";
strcpy(p1,p2);
printf("%s\n",p1);
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
return 0;}
直接上代码
首先得知道,char *p1=“smh” 这种指针指向的是一个常量区,是不可以被修改的指针变量
这是代码的运行结果,会显示段错误,因为指针指向的区域是不可修改的。
如果改成字符串数组的形式,就可以正常打印出结果,如下图
如果用strcat(将一个字符串加到另一个字符窜末尾)
如果用两个指针指向字符串,一样会报错,原因跟第一个相同。所以以后如果想进行字符串操作,最好不要把他们定义成字符串指针的形式。