Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
#1

Неясности в теории - C++

11.10.2015, 19:55. Просмотров 964. Ответов 68
Метки нет (Все метки)

Здравствуйте! Объясните пожалуйста почему в параметрах функции чаще всего используют указатель на массив, а не сам массив, например, void display(int *num).
И еще один вопрос, для чего нужен знак % в данной функции:rand()%1999-999. То, что это функция заполнения рандомными числами,я знаю, но вот для чего там знак % ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2015, 19:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неясности в теории (C++):

Некоторые неясности с задачей - C++
Имеется задача: вырезано Имеется ее решение: #include <stdio.h> #include <iostream> typedef int *B; int main () ...

Неясности в работе программы - C++
Доброго всем времени суток! :) Уже час пытаюсь понять почему во время исполнения этого кода (в borland, Cи), при вводе цифр ( через...

Некоторые неясности с задачей - C++
Имеется задача: вырезано Имеется ее решение: #include <stdio.h> #include <iostream> int main () { ...

Неясности в реализации метода Адамса - C++
Добрый вечер, форумчане. Я кажется запутался в реализации этого метода. Скажем порядок метода - 4. Есть: // правые части...

Подсчёт выражения. Разработка программы и неясности с функцией pow - C++
Привет, друзья. Задали задачку вот такую: http://habreffect.ru/files/808/bdadc49dd/DSC08284.jpg Собственно говоря программу я написал...

немного теории - C++
Очень долго искал в инете определение методу Итерации чтоб так сказать было разжеванно но не нашел кто поможет дать ему определение на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:33 #31
Цитата Сообщение от castaway Посмотреть сообщение
То же самое, но только с моими цитатами можно?
пожалуйста.

#8
Цитата Сообщение от castaway Посмотреть сообщение
Обычно вместе с указателем на массив передают и его размер.
Как ты представляешь себе передачу массива (не указателя на него)?
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,666
11.10.2015, 21:34 #32
Цитата Сообщение от hoggy Посмотреть сообщение
вы ошибаетесь.
см стандарт c++11y
Только работает не во всех компиляторах, поддерживающих последние и даже частично новые, хотя еще и не утвержденные стандарты. Да? (с++14, c++17)
форум режет ссылки..
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:35 #33
Цитата Сообщение от castaway Посмотреть сообщение
в твоём примере размерность помнит ссылка, а не указатель.
то есть, вы считаете, что в #22 передается ссылка?

C++
1
2
3
template<class T, size_t N>
void view(const T (*p)[N])  //<--- по вашему p - это ссылка?
{...}
Добавлено через 46 секунд
Цитата Сообщение от daslex Посмотреть сообщение
Только работает не во всех компиляторах
ну да, конечно.
c++11 работает не во всех компиляторах.
не говоря уже о последующих стандартах.
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,666
11.10.2015, 21:39 #34
Clang C++11 полностью поддерживал еще в 2013, если сайты не врут.
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:43 #35
Цитата Сообщение от daslex Посмотреть сообщение
Clang C++11 полностью поддерживал еще в 2013, если сайты не врут.
auto в аргументах это c++11y
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
11.10.2015, 21:44 #36
Цитата Сообщение от hoggy Посмотреть сообщение
пожалуйста.
#8
Этот вопрос был задан в конкретной ситуации для конкретного пользователя при конкретных обстоятельствах. Если ты его не понял, то и не следовало отвечать на него. Вместо этого ты перешёл в другую "плоскость" и начал доказывать своё.

Ты лучше ответь каким образом указатель (не ссылка!) хранит размер массива.
Цитата Сообщение от hoggy Посмотреть сообщение
не обязательно передавать именно указатель на массив.
и совсем не обязательно передавать размер массива.
(указатель на массив так же, как и ссылка на массив помнит размерности)
Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
то есть, вы считаете, что в #22 передается ссылка?
Поправлю себя, размер помнит шаблон.
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:46 #37
Цитата Сообщение от castaway Посмотреть сообщение
и начал доказывать своё.
вы ошибаетесь.
я никому ничего не доказываю.
кстати, то, о чем я вещаю - это банальности.
хорошо знакомые любому, кто мало-мальски умеет с++.

Цитата Сообщение от castaway Посмотреть сообщение
ы лучше ответь каким образом указатель (не ссылка!) хранит размер массива.
сообщение #22 для кого было оставленно?

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
Поправлю себя, размер помнит шаблон.
нет, не шаблон.
а указатель на массив.

хотите, что бы я переписал этот код без использования шаблонов?
или может быть сами догадаетесь, как его переписать без шаблонов?
daslex
11.10.2015, 21:50
  #38

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
c++11y
Что это за стандарт такой?. Я как в гугл не вбиваю, он мне ничего не дает.

hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:52 #39
Цитата Сообщение от daslex Посмотреть сообщение
Что это за стандарт такой?
так обозначается стандарт новее, чем с++11.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
11.10.2015, 21:53 #40
Цитата Сообщение от hoggy Посмотреть сообщение
хотите, что бы я переписал этот код без использования шаблонов?
Хочу.
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 21:54 #41
Цитата Сообщение от castaway Посмотреть сообщение
Хочу.
я не удивлен.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
void view(const int (*p)[3])
{
    for(const auto& i: *p)
        std::cout<< i <<", ";
    std::cout<<'\n';
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    const int a[] {1,2,3};
    
    view (&a);
}
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,666
11.10.2015, 21:57 #42
Добавлено через 19 секунд
hoggy,Ясно. Но это не будет компилироваться не в gcc, не потому что все остальное не полностью соответствует стандартам, а потому что у gcc'шников местами включены нестандартные фишки. Я пробовал с С++17, C++14 (В онлайн компиляторах)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
11.10.2015, 22:01 #43
Цитата Сообщение от hoggy Посмотреть сообщение
я не удивлен.
А я не удивлён в том, что так и не было доказано что указатель хранит размер массива.
Rius
Эксперт .NET
2449 / 1643 / 376
Регистрация: 25.05.2015
Сообщений: 5,574
Записей в блоге: 8
Завершенные тесты: 4
11.10.2015, 22:06 #44
Цитата Сообщение от castaway Посмотреть сообщение
Давай вернёмся к старым временам:
Давайте:
Цитата Сообщение от castaway Посмотреть сообщение
Можете привести пример того, как передать все 100500 значений массива в функцию?
В #19 пример того, как передать массив по значению.

На исходный вопрос я ответил ещё в #7. Простой массив передаётся одинаково в этих трёх случаях: (int x[]), (int *x) и (int x[N]).
Цитата Сообщение от castaway Посмотреть сообщение
А зачем тогда отвечать в фантастическом (невозможном) стиле?
Чтобы писать понятный код в любом случае. Ну, ещё можно отправить зубрить труды корифеев, там всё по правилам. Или, Вы могли ответить сразу в полном объёме, а не задавать очевидный вопрос, ответ на который Вам известен.
castaway, Вы не хотите соблюдать правила хорошего тона, о которых вспомнили?
hoggy
6531 / 2711 / 468
Регистрация: 15.11.2014
Сообщений: 5,988
Завершенные тесты: 1
11.10.2015, 22:07 #45
Цитата Сообщение от daslex Посмотреть сообщение
Но это не будет компилироваться не в gcc, не потому что все остальное не полностью соответствует стандартам, а потому что у gcc'шников местами включены нестандартные фишки. Я пробовал с С++17, C++14 (В онлайн компиляторах)
я не буду говорить за шланг.
возможно он просто не поддерживает эту фичу.

однако, это стандарт.
правда не помню точно из какого.
наверное с++14.

можно указывать auto в лямбдах (шаблоно лямбды).
ну и далее - можно указывать в обычных функциях.

Цитата Сообщение от castaway Посмотреть сообщение
А я не удивлён в том, что так и не было доказано что указатель хранит размер массива.
то есть, код из #41 вы проигнорировали.
ну-ну.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 22:07
Привет! Вот еще темы с ответами:

Вопросы по теории - C++
Здравствуйте, уважаемые участники форума. Начинаю изучать программирование и язык C++ в частности. И сразу же появились вопросы,...

непонятность по теории - C++
что означает статическая переменная? она как локальная только не стирается после окончания функции? или как?

Немного теории - C++
Доброго дня, форумчане! Пишу курсач на тему Системы программирования. Препод сказал, что у меня нет информации о видах систем...

Вопросы по теории C++ - C++
Есть несколько вопросов по теории C++ 1)Что такое функция пользователя 2)Как инициализировать указатель Если можно , то без всяких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.10.2015, 22:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru