У меня был метод, который требовал const unsigned char *
в качестве параметра, например.интерпретация строки литерал
func(const unsigned char* p);
Я назвал это так: func("\x34\x21\x00\x00");
(значение, передаваемое десятичное 8500 в небольшой Endian).
Мой вопрос: почему я мог пройти "\x34\x21\x00\x00"
как char*
?
Позвольте мне дать краткое объяснение и, пожалуйста, исправьте меня, если я ошибаюсь.
То, что было передано функции , было адресом первого байта строки "\ x34 \ x21 \ x00 \ x00". Строка «\ x34 \ x21 \ x00 \ x00» хранится в памяти, и в основном я передал адрес первого байта этой строки. Я прав?
это C или C++? выглядит C мне. – concept3d
@ concept3d: есть ли что-то здесь, что недействительно в C++? –
да. Это * будет * давать ошибку в C++. В C указатели могут быть неявно лишены. Просто попробуйте оба компилятора, чтобы убедиться, проверьте мой ответ. – concept3d