int p_entity(char **data){
char *pch;
pch = strtok(*data, " \n");
// printf("%s ", pch);
pch = strtok(NULL, " \n");
// (*data) = (*data) + 1; // 1. this is okay
// (*data) = pch; // 2. but doing this will cause an error
printf("%c %d \n", *pch, pch);
printf("%c %d \n", **data, *data);
}
Из приведенного выше кода я получу следующее, если раскомментирую 1:
g 4927479
e 4927456
Я получу следующее, если раскомментирую 2:
g 4927479
g 4927479
3 [main] main 8172 exception::handle: Exception: STATUS_ACCESS_VIOLATION
470 [main] main 8172 open_stackdumpfile: Dumping stack trace to main.exe.stackdump
Может кто-нибудь объяснить, почему я получаю эту ошибку? Я думаю, что оба назначения будут законными, а инкремент (* data) будет эквивалентен прямому назначению адреса, по которому я хочу, чтобы он был.