解释字符串文字

时间:2014-01-20 12:00:00

标签: c++ c

我的方法需要const unsigned char *作为参数,例如

func(const unsigned char* p);

我这样称呼它:func("\x34\x21\x00\x00");(传递的值是小端的小数8500)。

我的问题是为什么我可以将"\x34\x21\x00\x00"作为char*传递?

让我简要解释一下,如果我错了,请纠正我。

传递给函数的是字符串“\ x34 \ x21 \ x00 \ x00”的第一个字节的地址。字符串“\ x34 \ x21 \ x00 \ x00”存储在内存中,基本上我传递了该字符串的第一个字节的地址。我是对的吗?

2 个答案:

答案 0 :(得分:2)

是的,你是对的。字符串包含什么并不重要 - 你传递的是第一个字节的地址。

答案 1 :(得分:1)

这在C中是合法的,指针将被隐式转换。在C ++中虽然这会产生错误(仅在MSVC2010中尝试过)。

相关问题