Нет, вы можете использовать его просто отлично. Несмотря на то, что код, который вы дали, не компилируется, я думаю, я понимаю, о чем вы спрашиваете.
Сегмент кода, такой как:
const char *x = "Hello";
fnA (x);
fnB (x);
должно быть просто отлично.
Если вы обнаружите, что fnB
не получает ожидаемого, то либо:
fnA
меняет то, на что указывает x
(обычно это невозможно, поскольку это const char *
); или
- какой-то не показанный фрагмент кода меняет сам указатель; или
- что-то портит память.
Попробуйте этот код в качестве примера:
#include <iostream>
#include <iomanip>
static void fnA (const char *a) {
std::cout << "fnA: [" << a << "]" << std::endl;
}
static void fnB (const char *b) {
std::cout << "fnB: [" << b << "]" << std::endl;
}
int main (void) {
const char *x = "Hello";
fnA (x);
fnB (x);
return 0;
}
Выводит, как и ожидалось:
fnA: [Hello]
fnB: [Hello]