При объявлении нескольких переменных одного типа в одной строке:
const char* key, value;
Тип
key будет
const char*, а тип
value const char.
Для того, что-бы они оба были указателями, нужно делать так:
const char* key, *value;
Из этого, можно подумать, что при объявлении указателя, символ * относится к имени(не как часть, а как что-то зависящее от него), а не к типу.
Мне кажется, что это очень странный и контринтуитивный синтаксис, противоречащий например тому, когда мы приводим некую переменную к указателю:
uint64_t addr = 0x1000;
// Мы пишем так
void* ptr = (void*)addr;
// А не так
void* ptr = (void)*addr;
Объясните, что я недопонимаю?