У меня возникла следующая проблема с пониманием синтаксиса C / C ++. Предположим, у нас есть следующие данные:
int a[3] = {1,3,5};
int b[3] = {2,4,6};
int* p[2];
Я создал массив p
, содержащий два указателя.
Первый вопрос : почему не работает следующее присвоение:
p[0] = &a; p[1] = &b;
Поскольку указатели принимают адреса в качестве своих значений. По какой-то причине p[0] = a; p[1] = b;
работает, хотя.
Второй вопрос: , поскольку p [0] теперь указывает на a
, почему *(*(p[0]))[0]
не работает? Как получить значение из указателя, ссылающегося на некоторый индекс?
Справочная информация: У меня возникли эти проблемы, поскольку я пытаюсь естественным образом расширить синтаксис со скалярами на массивы, где будет работать следующий синтаксис:
double a = 3;
double* p = &a;
и * p дает значение, тогда как p дает адрес.