Зачем нужен в c
Перейти к содержимому

Зачем нужен в c

  • автор:

Для чего нужен Символ * перед именем функции?

Где можно почитать конкретно про такие случаи? Буду очень благодарен за ответ.

Отслеживать
2,882 2 2 золотых знака 21 21 серебряный знак 45 45 бронзовых знаков
задан 10 ноя 2020 в 11:31
John Smith John Smith
27 7 7 бронзовых знаков
В старом стиле перед функцией указывается тип возвращаемого значения.
10 ноя 2020 в 11:33
Это значит, что функция возвращает указатель
– user361068
10 ноя 2020 в 11:34

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Функция описывается так:

возвращаемый_тип имя_функции([тип1 аргумент1 [, тип2 fргумент2] . ) 
const double * f2(const double * ar, int n); 

const double * — возвращаемый тип, f2 — имя функции, const double * — тип первого аргумента ar , int — тип второго аргумента n .

На второй вопрос — «прототип» и определение должны совпадать (кроме, разве что, имен аргументов), так что * нужна точно так же, чтобы указывать возвращаемый тип.

Почитать обо все этом можно в учебниках по C++.

Указатель на функцию данного типа будет иметь вид

const double * (* func_ptr)(const double *, int); 

Отслеживать
ответ дан 10 ноя 2020 в 11:37
220k 15 15 золотых знаков 120 120 серебряных знаков 233 233 бронзовых знака

Все эти функции возвращают указатели на массивы вещественных чисел. Как Вы, наверное, знаете (или можете узнать отсюда) указатель в С++ это такой тип данных, который хранит адрес в памяти, а указатель на массив — указывает туда, где хранится его первый элемент или, правильнее сказать хранит в себе адрес первого элемента массива. (Первый это тот, у которого индекс = 0).

Если звездочку в прототипе не указывать, то функция будет возвращать не адрес по которому хранится double , а само значение double . Чем они отличаются, думаю понятно, но если нет, то можно почитать лекцию. Правда там СИ , а не С++

Про указатели на функции: Указатели на функции указывают на (хранят в себе адрес) функций. То есть когда мы вызываем какую-то функцию, программа переходит ее по адресу и начинает ее выполнять.

Объявить указатель на функцию можно так:

int foo () < return 7; >// сама функция int main() < int (*fooPtr ()) = foo; // указатель на foo >

Почитать про указатели на функции можно тут

зачем нужен «&» ?

Author24 — интернет-сервис помощи студентам

Встретил в книге Р.Лафоре в примере непонятную мне вещь.

зачем нужен «&» в данной конструкции?

Distance& dist = *(new Distance)

почему бы не написать

Distance dist = *(new Distance)

в чем разница?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Зачем нужен такой конструктор: X(const X &) = delete;
Всем привет, подскажите пожалуйста что значит такой конструктор в структуре и как это можно.

Зачем тут нужен амперсанд «&»?
Программа с помощью контейнера сортирует строки из входного файла по алфавиту и преобразует их к.

Зачем может понадобиться чистое использование rvalue ссылок, типа T&& r = 5; (практическое применение)?
зачем может понадобиться чистое использование rvalue ссылок, типа T&& r = 5; (практическое.

Зачем нужны const и & в коде
Здравствуйте. Имеется данный код. #include <iostream> class Dollars < private: int.

2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
Потому, что ты конструкцией

new Distance

выделяешь память под объект.. возвращается адресс этой памяти.. обычно использую такой подход:

Distance *dist = new Distance;

создается указатель на Distance, которые указывает на память, выделенную под объект Distance оператором new.

Вот такая бы память, была бы нелогичной, так как присваивать объекту адресс — это против всякой логики.

Distance dist = new Distance;

* — это оператор разыменования. он служит для того, чтобы получить доступ к объекту, зная его адресс.

То есть.. Сделав так

Distance *dist = new Distance;

мы можем спокойно общаться с объектом.. например присвоить значение полу SomeX

(*dist).SomeX = 4;

В этом же случае.. создается ссылка на Distance.. ссылка инициализируется не адрессом, как указатель.. а объектом.. поэтому мы и разименовываем адресс.

Distance& dist = *(new Distance)

Регистрация: 17.04.2010
Сообщений: 20
спасибо конечно.. но «&» в объявлении переменной зачем?
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
jammer77, чтобы указать, что это ссылка.
Регистрация: 17.04.2010
Сообщений: 20

ЦитатаСообщение от Vourhey Посмотреть сообщение

jammer77, чтобы указать, что это ссылка.

Distance dist = *(new Distance)

а чего так не написать?
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
jammer77, а так это будет уже не ссылка.
Регистрация: 17.04.2010
Сообщений: 20

1 2 3 4
int& test = *(new int); int test1 = *(new int); test = test1 = 777;

эта запись полностью правильная?

Добавлено через 33 минуты

ЦитатаСообщение от Vourhey Посмотреть сообщение

jammer77, а так это будет уже не ссылка.
и чем это плохо?
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
Да, правильная.

ЦитатаСообщение от jammer77 Посмотреть сообщение

и чем это плохо?

Это не плохо. Почитай в инете про ссылки, чтобы таких вопросов не задавать.
http://programmersclub.ru/14/

Регистрация: 17.04.2010
Сообщений: 20

ЦитатаСообщение от Vourhey Посмотреть сообщение

Да, правильная.
Это не плохо. Почитай в инете про ссылки, чтобы глупых вопросов не задавать.
http://programmersclub.ru/14/

хочу заметить что я задаю свои вопросы в топике для глупых вопросов

а вообще я нашел правильный ответ у Стратструпа:

1 2 3 4
int ii = 0; int& rr = ii; rr++; coutii; // ii равна 1

Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696

jammer77, это не ответ, а просто кусок кода. А ответ тебе написали еще во втором сообщении. Достаточно просто прочитать про ссылки.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Объяснить зачем нужен i
#include <iostream> #include <conio.h> using namespace std; int main() < cout <<.

Зачем нужен полиморфизм
читал про то что такое полиморфизм, виртуальные методы и тд, вот промер из статьи про виртуальный.

Ostream — зачем нужен?
Здравствуйте, Извините, подскажите пожалуйста, что такое ostream? Не могу понять, зачем он.

Зачем нужен символ \r?
Обычно его пишут вместе с \n, то есть так \r\n, а зачем? Ведь если просто написать \n тоже.

Зачем нужен return?
Я читал,что return возвращает значение функции. Какое значение? Почему иногда return 0, а иногда.

Зачем нужен static
Объясните зачем нужно объявлять перменные за типом статик, что это даёт я так и не понял. Почему.

Или воспользуйтесь поиском по форуму:

Чем отличается C от C++

Короткий ответ: C++ — это улучшенный C. У этих языков одинаковый на 99% синтаксис и команды, но C — это больше про структурное и процедурное программирование, а C++ — про объектно ориентированное.

C — язык, который сделал в 1973 году Деннис Ритчи. Главная цель языка — скорость, быстродействие и универсальность. Язык изначально проектировался как системный, чтобы на нём можно было писать код для процессоров, драйверов и создавать на нём операционные системы. В то время большинство этих вещей делали на ассемблере, и Ритчи хотел это упростить.

C++ придумал Бьёрн Страуструп в начале восьмидесятых, когда ему не хватало возможностей стандартного C. Он сделал язык более строгим, добавил в него классы, ООП-подход и перегрузку операторов, сохранив скорость оригинального С. В 1983 году Бьёрн переименовал язык из «C с классами» в C++.

�� О перегрузке операторов как-нибудь в другой раз 🙂

C C++

Код читается проще

Проще портировать код на другие платформы

Есть структуры и переменные типа «структура»

Наследование — это структура внутри структуры

void — обязательное слово

Можно объявлять глобальную переменную несколько раз

Исключения нужно конструировать самому

Нет перегрузки операторов

Почти всё стандартно и предсказуемо

Для чего изучать

C — классический язык разработки системного ПО и любого софта для микропроцессоров. На нём написаны Linux, большая часть Windows и MacOS. Если взять любой современный носимый гаджет или электронное устройство, в большинстве случаев они работают тоже под управлением программы на C. В мире огромное количество кода, который написан на C (и ещё столько же будет написано), поэтому проблем с работой у C-программистов не предвидится.

C++ — выбор тех, кому одновременно нужна вся мощь C и гибкость объектно ориентированного программирования. Counter-Strike, StarCraft и World of Warcraft написаны на C++, а это значит, что можно сочетать производительность C и современные технологии. Часть движка Unity тоже написана на C++, чтобы получить прямой доступ к памяти и ресурсам системы.

Нельзя ли подробнее?

На самом деле нет такой уж большой разницы между C и C++. Это одинаково мощные и быстрые языки, просто у них разная область применения и стиль программирования.

Если вам важна скорость, производительность и относительная простота языка — смотрите на C, там это всё есть. С другой стороны, из-за простоты в нём многие вещи придётся делать вручную — обрабатывать исключения, следить за сроком жизни переменных и структур или писать дополнительный код.

Сторонникам ООП больше подойдёт C++ — в нём уже есть всё, что нужно для работы с объектами, областями видимости и прочим добром. Иногда такой код сложнее поддерживать и он может работать на несколько процентов медленнее, чем на C, но в нём есть та свобода, которой нет в оригинальном языке. Та же перегрузка операторов — удивительно мощная вещь в умелых руках, которая может сэкономить много времени и ресурсов.

Чтобы было понятнее, скоро напишем подробно про оба языка. А вы не болейте и берегите себя.

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Зачем нужен в c

С этим инструментом работают
Инструмент используется
Ищите подрядчика?

Устройте конкурс между агентствами и узнайте реальные цены и сроки выполнения вашего проекта. Создание заказа занимает 5 минут.

Об инструменте

Что такое язык С

C – язык программирования общего назначения со статической типизацией, который относится к компилируемым языкам. Языку C почти 50 лет: данный язык является прародителем таких языков, как Objective-C, C++, C#. Также язык C встречается в подавляющем количестве современных десктопных программ и абсолютно разных устройств, вплоть до уличных кофейных автоматов.

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

Данный язык поддерживает компиляторы для всех современных операционных систем. Это дает возможность писать программное обеспечение для любой ОС. Если учитывать особенности ОС, можно компилировать один и тот же код языка на разные операционные системы, что делает разработку кроссплатформенной. C работает с однопроходной компиляцией, благодаря чему он значительно быстрее интерпретируемых языков программирования. Как правило, в драйверах и прочих системных программах основную часть кода пишут на C, а участки, которые требуют особо быстрой производительности, пишут на языках-ассемблерах.

Язык C поддерживает полностью ручное управление памятью компьютера. Разработчик сам диктует условия для исполнения программы, это позволяет распоряжаться ресурсами устройства, на котором будет выполняться программа. При этом, неправильно написанная программа может привести к любым ошибкам, вплоть до поломки операционной системы.

По умолчанию, C не поддерживает парадигму объектно-ориентированного программирования, потому что этот язык рассчитан на выполнение задач, связанных с процедурной парадигмой. Для объектно-ориентированного программирования позднее разработали язык C++, который обладает схожим синтаксисом с C, но поддерживает по умолчанию классы и объекты.

Где применяют язык С

  • разработка операционных систем и драйверов для различных устройств;
  • написание отдельных частей кода для программ в участках, в которых важно быстродействие;
  • написание программного обеспечения для устройств с микропроцессорами;
  • разработка баз данных;
  • разработка более высокоуровневых языков программирования.

Преимущества разработки на языке С

  • производительность гораздо выше, чем у высокоуровневых, более современных языков программирования;
  • ручное управление памятью позволяет добиться максимальной оптимизации работы программы;
  • наличие компиляторов ко всем операционным системам, поддержка кроссплатформенной разработки с небольшими доработками;
  • достаточно большая популярность языка, наличие большого количества вспомогательных материалов на русском языке.

Недостатки разработки на языке С

  • сложность программирования в сравнении с задачами, которые выполняются современными
  • высокоуровневыми языками;
  • специалист должен обладать хорошей квалификацией, чтобы написать качественную, оптимизированную программу;
  • меньшая популярность языка в сравнении с современными интерпретируемыми языками;
  • непригодность использования языка для большого количества типовых задач в связи с существованием большого количества более подходящих решений.

Примеры использования языка С

Язык C встречается практически во всех десктопных программах, а также в прошивках различных устройств с микропроцессорами. Стоит сказать, что десктопные программы зачастую содержат в себе не только C, но и код высокоуровневых языков, либо языков-ассемблеров.

  • Операционные системы – Linux, Microsoft Windows, masOS.
  • Языки программирования – Swift, Perl, PHP, Python, Ruby, C++, C#, Objective-C.
  • Базы данных – MySQL, SQLite, PostgreSQL, Oracle Database.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *