c-char*赋值的作用是什么



我有一个char*,我正在为它分配另一个char*.我想知道通过该指令会发生什么?

例如:

char* foo; // suppose it is initialized and defined
char* bar = foo // I am defining bar

调用赋值操作wrt值、内存等之后(foo和bar(会发生什么?

我是C的新手,对你们中的一些人来说,这可能是一个非常琐碎的问题。

假设我们初始化了两个指针来指向不同的字符串:

const char *foo = "abcd";
const char *bar = "efgh";

如果我们";draw";它们在记忆中的样子是这样的:

+------++--------+|foo|--->|"abcd"|+-----++--------++-----++--------+|条形图|--->|"efgh"|+-----++---------+

然后我们分配给bar:

bar = foo;

然后它会变成这样:

+------++--------+|foo|-+->|"abcd"|+-----+|+--------+|+-----+|+--------+|条形图|-/|"efgh"|+-----++---------+

现在foobar都指向同一位置。

简而言之,这就是初始化的定义:

const char *bar = foo;

会的。

char* bar = foo中,= foo在技术上是初始化,而不是赋值。初始化遵循许多分配规则。

由于foo是指向char的指针,并且您说它已经初始化,所以它有一个"值",它是对某个char对象的引用(或空指针(。我们经常把这些值看作是计算机内存中的地址。初始化或赋值仅仅给bar一个相同的值。

值用字节表示。因此,为了记录foo的值,在存储器中为foo保留了一些字节。要将bar设置为相同的值,编译器所要做的就是将字节从foo的内存复制到bar的内存。

最新更新