将C语言字符指针复制到非指针字符中

3

这样做有什么问题吗?

char* field = new char[2];
field[0] = 'S';
field[1] = '\0';

char c = *field;

C语言中的变量是否总是等于'S'?

4个回答

4
没问题,C将永远是'S'。

2

这是完全正常的 - c将始终等于'S'。对field进行解引用,一个类型为char的指针将得到一个char


实际上,对于类型为char的指针进行解引用会产生一个char& - ildjarn
@ildjarn:不,它不会。看看§5.3.1/1(至少在n3291中)它产生了char左值。 - Vitus
1
@Vitus:除了通过引用,C++中的“函数”如何返回lvalue?(我意识到这里没有调用任何函数,但语义上...) - ildjarn
@ildjarn:嗯,它的行为就好像返回了一个char&,但你不能仅仅说它返回了一个引用-标准就是这样写的。 :) - Vitus

0

存在一个问题,即new char[2]不是C语法。 总的想法是正确的,但是:c始终为'S'。


0

这没有任何问题。当您在该行中取消引用字段数组时

char c = *field;

你实际上在询问数组的第一个元素的值,即在这种情况下是'S'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接