LINUX.ORG.RU

Несколько вопросов новичка по Си

 , ,


0

3
  1. Как работает указатель?
  2. Функция sub получает делимое и вычитает из него делитель Она ничего не возвращает и просто меняет значение переменой по указателю. Но когда вызываю функцию, приходится указывать & и имя переменной. Нельзя ли просто передать переменную и почему?
    void sub(int* f, int g)
    {
      *f = *f - g;
    }
    
    int main(void)
    {
      int number = 15, div = 7;
      sub(&number, div);
      printf("%d\n", number);
      return 0;
    }
  3. Насколько этот код говно? Что стоило бы исправить? Спасибо!
★★
Ответ на: комментарий от mystery

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

ты можешь захотеть изменить один указатель на другой. типичный пример: есть список указателей на функции-обработчики. тебе надо некоторые из них поменять на другие. сами элементы - уже указатели. надо записать туда другие значения. передаёшь адрес указателя и меняешь его значение на другой указатель. вот тебе и указатели на указатели на функции.

таких примеров довольно много. это не такая уж экзотика.

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

ну вот да, кстати. argv - прекрасный пример.

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

Его можно и так, например, записать:

Но зачем? [static N] у параметра функции проверяет на этапе компиляции, что туда передадут массив размером не меньше N, а по сути это тот же указатель, нэ?

anonymous
()
Ответ на: комментарий от anonymous

Но зачем?

Без смысла. В данном случае был показан массив, а все остальное - просто для примера, как их (массивы) можно использовать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.