我的方法需要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”存储在内存中,基本上我传递了该字符串的第一个字节的地址。我是对的吗?
答案 0 :(得分:2)
是的,你是对的。字符串包含什么并不重要 - 你传递的是第一个字节的地址。
答案 1 :(得分:1)
这在C中是合法的,指针将被隐式转换。在C ++中虽然这会产生错误(仅在MSVC2010中尝试过)。