Почему нельзя обратиться к массиву, не указывая индекс его элемента - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. вот часть кода.
#define N 3
 
int main()
{
char *m [ N ] = {"First","Second","The last"};
char *tmp;
int k;
 
k = N;
 
tmp = m [ 0 ] ;
m [ 0 ] = m [ 2 ] ;
m [ 2 ] = tmp;
 
while(k-- > 0)
{
printf(" %s",*m++);
}
 
....
 
}
Вопрос 1) Почему вместо конструкции tmp = m [ 0 ] ; нельзя написать вот так tmp = m; ведь m имя массива это указатель на его первый элемент? почему всю конструкцию нельзя записать так. tmp = m; m = m+2; m+2 = tmp; Вопрос 2) в строке printf(" %s",*m++); мне подчёркивает *m++ и пишет что ошибка... но по конструкции это же правильно?! *m++ //След. элемент. m++ //Адрес след элемента.

Решение задачи: «Почему нельзя обратиться к массиву, не указывая индекс его элемента»

textual
Листинг программы
char *m [ N ] = {"First","Second","The last"}

Объяснение кода листинга программы

В представленном коде происходит объявление массива указателей на строки. При этом, переменная m является массивом указателей, а каждый указатель в этом массиве указывает на строку. В данном случае, в массиве указателей m содержатся три строки: First, Second и The last. Индексы элементов массива начинаются с 0, поэтому первый элемент массива будет иметь индекс 0, второй - индекс 1 и так далее. Список элементов кода:

  1. Тип данных переменных: char *m [N] - массив указателей на строки.
  2. Значения переменных: m[0] = First, m[1] = Second, m[2] = The last.
  3. Количество элементов: N = 3.
  4. Индексы элементов: 0, 1, 2.
  5. Значения элементов: First, Second, The last.

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы