C-strcpy vs assignment

C-strcpy vs assignment,c,C,如果我使用strcpy()function和赋值运算符,它们有什么区别吗 char word[][40],*first; 下面是2个例子 *first=word[0]; strcpy(first,&word[0]); strcpy执行深度复制。它将包含在内存地址处的数据(等于指针的值)复制到内存地址处的数据(等于第二个指针) 赋值只分配第一个指针的第二个指针值 以下是一个小数字: A -> "some data " B -> "some other

如果我使用
strcpy()
function和赋值运算符,它们有什么区别吗

char word[][40],*first;
下面是2个例子

*first=word[0]; 
strcpy(first,&word[0]);

strcpy
执行深度复制。它将包含在内存地址处的数据(等于指针的值)复制到内存地址处的数据(等于第二个指针)

赋值只分配第一个指针的第二个指针值

以下是一个小数字:

A -> "some data           "
B -> "some other data     "
派遣后:

A -> "some data           "
   /
  /
B    "some other data     "
strcpy之后:

A -> "some data           "
B -> "some data           "

请注意,要复制到的strcpy的内存必须事先分配。

您称之为“等号”的“等号”通常称为“赋值运算符”(
=
)。“equals运算符”将是
=
。为了避免混淆,我冒昧地编辑了您的问题。第二个问题是未定义的行为。您正在将字符串写入一个地址,其中只有一个指针,没有分配任何内存来保存该字符串。@bolov从技术上讲,将scheme上的数据显示为多字符文字是可以的,我认为。因为表达式
“s”
的值是指针,
's'
的值是
's'
本身的表示。但是,是的,很好的一点,对于新手来说,用双引号阅读会更简单。谢谢你的精彩解释。