Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Объясните пожалуйста про указатели на функцию .  (Прочитано 2313 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн olegRomanuk

  • Автор темы
  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Здравствуйте.
В общем стоял делал яичницу и подумал.

Вот например есть функция которая возвращает указатель. Но это же будет указатель на ячейку памяти по которой хранится значение которое возвратила функция, хорошо если там просто число , например 1.  Тогда возникает вопрос, разыменовывая указатель я смогу получить значение ? Думаю да. А если функция возвращает указатель не на 1 число , а скажем так на 2.То есть return возвращает 2 оператора. Как я смогу получить доступ ко второму числу ведь они не обязательно или обязательно ?? будут идти подряд. Или выдаст компилятор ошибку?
А может быть такое:
return &a;
где а не локальная а глобальная переменная. И другой случай
return *p;

Заранее спасибо, простите за мои нубские вопросы.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Вот например есть функция которая возвращает указатель.
Указатель на что (какой тип)? void?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5641
  • Все по палатам!
    • Просмотр профиля
А если еще попить кофе... то можно сказать, что функция всегда возвращает указатель (адрес), только, когда это число, то оно лежит по адресу регистра (типа EAX)  :-\
Извините, я все еще учусь

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1694
  • А чего вы так смотрите?..
    • Просмотр профиля
Автор, структуры. Просто используй структуры. Передавай структуру в функцию по ссылке и делай с ней что хочешь. А из функции возвращай int, например -1 в случае ошибки и 0 в случае успеха.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн olegRomanuk

  • Автор темы
  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Вот например есть функция которая возвращает указатель.
Указатель на что (какой тип)? void?
Не важно какой например инт. Если воид то тогда нет смысла в ретурн вроде бы как.

Пользователь решил продолжить мысль 09 Апреля 2014, 12:39:35:
А если еще попить кофе... то можно сказать, что функция всегда возвращает указатель (адрес), только, когда это число, то оно лежит по адресу регистра (типа EAX)  :-\
Это да ведь стек должен же кто-то знать куда ему обратится

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5641
  • Все по палатам!
    • Просмотр профиля
olegRomanuk, это не стек - у стека другой регистр
Извините, я все еще учусь

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3163
    • Просмотр профиля
Автор, структуры. Просто используй структуры. Передавай структуру в функцию по ссылке и делай с ней что хочешь. А из функции возвращай int, например -1 в случае ошибки и 0 в случае успеха.
Если там числа одного типа, то проще завести для них массив, имя которого само по себе указатель.
Пётр.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5641
  • Все по палатам!
    • Просмотр профиля
olegRomanuk, а не пришло в голову взять книжку и почитать... можно и про асм, чтобы понятнее было
Извините, я все еще учусь

Оффлайн olegRomanuk

  • Автор темы
  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
olegRomanuk, а не пришло в голову взять книжку и почитать... можно и про асм, чтобы понятнее было

Провоцируешь.
А ведь ответа я не получил.

Оффлайн Карасик

  • Участник
  • *
  • Сообщений: 165
  • Kubuntu 23.10 amd64
    • Просмотр профиля
...А если функция возвращает указатель не на 1 число , а скажем так на 2.То есть return возвращает 2 оператора...
Как вы return-ом хотите вернуть два результата функции? При чём тут название темы?

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Вообщем ТС читай книжки.
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Вообщем ТС читай книжки.

Да, в чистом Cи, если чуть-чуть  углубиться
проблем с понятием указателя не возникает.
Это просто адрес в памяти переменной, массива,
массива структур, и вообще чего угодно.
При правильном алгоритме дает небольшую и
очень быструю программу.
Но бывает чревато сложно- обнаружимами ошибками
на стадии исполнения программы.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
с помощью указателя вызываем функцию, какой она тип возвратит?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
с помощью указателя вызываем функцию, какой она тип возвратит?

Возвратит тот, который указан при определении функции.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7208
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
olegRomanuk, лучшее средство для понимания - практика. Возьми vim gedit и напиши код, скомпилируй и посмотри.

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.