C - strcpy与赋值

Chr*_*s N 0 c

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

char word[][40],*first;
Run Code Online (Sandbox Code Playgroud)

以下是2个例子.

*first=word[0]; 
strcpy(first,&word[0]);
Run Code Online (Sandbox Code Playgroud)

V. *_*nko 5

strcpy执行深层复制.它将地址中包含的数据(等于指针的值)复制到地址处的存储器,该存储器等于第二指针.

赋值只是指定第一个指针的第二个指针值.

这是一个小图:

A -> "some data           "
B -> "some other data     "
Run Code Online (Sandbox Code Playgroud)

分配后:

A -> "some data           "
   /
  /
B    "some other data     "
Run Code Online (Sandbox Code Playgroud)

strcpy之后:

A -> "some data           "
B -> "some data           "
Run Code Online (Sandbox Code Playgroud)

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