Вопрос о повторном использовании указателей после перехода к функциям - PullRequest
0 голосов
/ 26 октября 2010

Итак, когда я передаю const char * функции один раз, могу ли я использовать ее снова?Похоже, в итоге мне выплевывается дерьмо.

const char *config_file = "file.txt";

function(int x, config_file);
cout << "Number" << x;


secondfunction(int y, config_file);

Нужно ли мне сделать еще один указатель на config_file?

Если да, то как мне это сделать?* Спасибо!

1 Ответ

10 голосов
/ 26 октября 2010

Нет, вы можете использовать его просто отлично. Несмотря на то, что код, который вы дали, не компилируется, я думаю, я понимаю, о чем вы спрашиваете.

Сегмент кода, такой как:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...