2013-05-23 2 views
3

Я вернулся с C++ через 15 лет ... Я просто не могу вспомнить, почему нам нужен адрес указателя. Как и в этом заявлении:strtok_s() Зачем нам нужен адрес указателя?

char *next_token = NULL; 
char *pszMozilla = strtok_s(szCopyVariable, "/", &next_token); 

Есть ли предположение, что адрес указателя будет представлять собой в конечном итоге начало списка указателей?

+0

Потому что 'strtok_s' должен хранить указатель в' next_token', поэтому ему нужен его адрес, чтобы узнать где. –

+0

Хорошо. Я здесь новенький. Я вижу, что @DanielFischer опубликовал тот же ответ, что и я, за исключением того, что он опубликовал 36 секунд до того, как я это сделал. На такие вопросы, вы должны просто ответить через комментарий? –

+3

@RamRajamony Если вы не хотите вводить правильный ответ, вы можете опубликовать быстрый полезный комментарий, как я [ну, я надеюсь, это полезно]. Затем, если никто не будет давать полноценный ответ, есть хотя бы какая-то помощь для ОП. –

ответ

9

strtok_s является реентерабельной функцией, и она должна хранить какое-то состояние где-то. Это состояние является указателем на символ после последнего обработанного. (Подумайте об этом, это действительно все, что вам нужно, чтобы возобновить токенизацию.)

Если функция хочет хранить X в предоставленном пользователем пространстве, пользователь должен указать указатель на X, указывая на то, где X Пойду. В нашем случае X является «указателем на char».

+0

Хорошо. Функция изменит указатель next_token. Поэтому он должен знать адрес next_token. –

1

Thats потому, что strtok_s() поддерживает состояние, перемещая next_token при каждом его вызове.

Смежные вопросы