程序中b字符串有赋值,只是发现这两种写法不能互换,互换会有错
追答是的,这两种有很大的差异,strcpy相当于以'\0'作为边界的内存复制,而a = b在32位机上实质上是一个4字节变量的赋值操作,与int a, b; a = b在本质上是一样的,当然也可以说这是4字节的内存复制^-^
strcpy(a,b)是把b指向的字符串复制到a所指向的地址中,这样改变a,b互不影响
a = b是将a指针指向b所代表的字符串,实际上改变a所指向的内容,b也改变了
理论上是这样,我也这样认为,但这个程序的结果,对b重新赋值后a的值却不变#include "stdio.h" #include "string.h" main() { char *b="abcdefg",*a; a=b; b="o"; printf("%s\n",b); printf("%s\n",a); }