3

为什么以下没问题?

    char *a;
    char b[]="asdf";
    a=b;

但下面不是吗?

    char a[10];
    char b[]="asdf";
    a=b;

以上给出了错误:分配中的类型不兼容。

4

5 回答 5

1

两个都不行。

也许你在尝试,

char *a;
char b[]="asdf";
a=b;
于 2013-03-15T03:20:46.887 回答
0
char a;
char b[]="asdf";
a=b;

在这里,您正在分配类型的数组b的地址。地址大小将为 4 个字节(64 位 m/c 中的 8 个字节),您将其分配给 1 个字节变量,因此值将被截断。这是合法的,但没有用。acharchara

我认为您实际上是在尝试将b数组的第一个字符分配给a. 在那种情况下做a = b[0]

于 2013-03-15T03:26:37.323 回答
0

数组的值计算为数组中第一个元素的地址。所以基本上,它是一个常数值。这就是为什么当您尝试在第二个示例中执行 a=b 时,您正在尝试执行类似于 2=7 的操作,只是您有两个地址而不是 2 个整数。

现在第一个示例可以工作是有道理的,因为将地址分配给指针是有效的操作。

于 2016-07-29T05:30:11.033 回答
-1

您需要为字符串库包含以下标头。

#include <string.h>

strcpy(strX, strY);如果有足够的空间,使用会将字符串 Y 复制到字符串 X 中。

于 2019-05-09T20:04:25.120 回答
-3

请使用 c++ 的 strcpy_s 函数,它的语法为 &dest,*source 它可能会有所帮助。

于 2015-08-17T05:17:25.097 回答