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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
#1

Подскажите использование char** на примере - C++

26.01.2013, 13:52. Просмотров 1756. Ответов 30
Метки нет (Все метки)

Подскажите использование char** на примере
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 13:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите использование char** на примере (C++):

Использование функции округления на конкретном примере - C++
Как использовать функцию округления на конкретном примере: #include <iostream> #include <Math.h> using namespace std; int main() { ...

Использование char в классе - C++
4. Как сделать все тоже самое(с пункта 1 по 3) но чтобы это были константные значения которые в дальнейшем нельзя изменить? 1. как...

Использование char* в классах - C++
Всем доброе время суток! В общем пытаюсь создать простейший класс с использованием char* для представления строк При компиляции...

Объясните использование "double" в данном примере - C++
#include <stdio.h> #include <math.h> int main(void) { int a,b,c; scanf("%d %d %d",&a,&b,&c); // x*x*x +...

Использование переменной типа char в цикле for - C++
Ребята, подскажите пожалуйста, как использовать 8-ми битную переменную в цикле for? Неправильный пример - for(char i = 0; i < N; i++)

Использование функций Getch(), putch(char) - C++
Ребята помогите разобраться. Толком не объяснили. Сижу ломаю голову. как это прописать. *** Написать функцию, которая при вводе с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 14:15 #16
Цитата Сообщение от silent_1991 Посмотреть сообщение
Kgfq, не согласен. В случае со ссылкой вызов функции не даст вам никакой информации о том, изменяется ли значение параметра внутри функции или нет. В случае с указателем дополнительное взятие адреса массива даёт некоторую информацию о возможных изменениях самого этого адреса.
Для этого есть осмысленные имена и коментарии, ну и конечно логично что просматривающий ознакомлен с прототипами используемых ф-ций.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2013, 14:44 #17
Avazart, тем не менее, я придерживаюсь мнения, что вызов
C++
1
foo(&bar);
говорит несколько больше, нежели
C++
1
foo(bar);
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 14:47 #18
Да по моему несложно догадаться что foo() изменяет переменную так как не возвращает значения, а изменять глобальные переменные внутри ф-ции плохой тон.

Конечно можно предположить что ф-ция может просто выполнять действия без возврата значений, но это как бы должно отражаться в названии ф-ции или коментариях.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2013, 15:04 #19
Avazart, функция может выполнять некоторые действия, но в качестве побочного эффекта изменять значение переданного параметра. В этом случае помещать в название пару дополнительных слов, ИМХО, оверхэд. С другой стороны, всего один символ амперсанда может предоставить ту же информацию.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 15:06 #20
Цитата Сообщение от silent_1991 Посмотреть сообщение
В этом случае помещать в название пару дополнительных слов,
Ну тут логично разбивать на две ф-ции, либо длинное название, либо коментарии...
Evg
Эксперт CАвтор FAQ
17624 / 5848 / 375
Регистрация: 30.03.2009
Сообщений: 16,124
Записей в блоге: 26
31.01.2013, 18:21 #21
silent_1991, он не понимает, о чём ты говоришь. Ты говоришь о точке вызова функции (и чтобы при этом в точку описания функции вообще не смотреть), а он говорит о точке её описания
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 18:23 #22
Вообще то понимаю...

Но что мешает смотреть еще и в точку вызова ? Что мешает комментировать в точке вызова ?
Evg
Эксперт CАвтор FAQ
17624 / 5848 / 375
Регистрация: 30.03.2009
Сообщений: 16,124
Записей в блоге: 26
31.01.2013, 18:25 #23
Цитата Сообщение от Avazart Посмотреть сообщение
Но что мешает смотреть еще и в точку вызова ?
Мешает время (а точнее, его отсутсвтие). Когда у тебя проект в несколько миллионов строк кода, то чем меньше ты будешь отвлекаться на каждый чих, тем быстрее пойдёт дело
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 18:33 #24
C учетом возможностей современных IDE "возвратится" не проблема...
А что бы не возвращаться нужно по любому знать свой код, а главное разбивать его так что бы и так было понятно в дальнейшем...
Опять же комментарии...

Добавлено через 5 минут
Если ты не помнишь что делает ф-ция, то толку от значка & все равно за подробностями придется лезть в код этой ф-ции.
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
31.01.2013, 18:43 #25
Цитата Сообщение от Avazart Посмотреть сообщение
Если ты не помнишь что делает ф-ция, то толку от значка & все равно за подробностями придется лезть в код этой ф-ции.
Становиться понятно, что значение в функции будет меняться.
В случае же с ссылкой из синтаксиса вызова ничего не понятно и приходится лезть в прототипы.
Цитата Сообщение от Avazart Посмотреть сообщение
Но что мешает смотреть еще и в точку вызова ? Что мешает комментировать в точке вызова ?
Прать по коду как ... или захламливать код, комментариями вида?
C++
1
//Вызов функции foo, которая в последствии меняет значение аргумента
увольте, но что-то такая перспектива меня не устраивает.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 18:50 #26
Где тут захламление ?
C++
1
foo(var); // foo(int & value);
Это конечно сильно абстрактно...
К примеру
C++
1
change_dir(Dir);
Тут и коменты не нужны...

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Становиться понятно, что значение в функции будет меняться.
И что это даст, если ф-ция делает еще что-то... а пять же придется лезть в код ф-ции
Evg
Эксперт CАвтор FAQ
17624 / 5848 / 375
Регистрация: 30.03.2009
Сообщений: 16,124
Записей в блоге: 26
31.01.2013, 18:52 #27
Цитата Сообщение от Avazart Посмотреть сообщение
Где тут захламление ?
Комментарий, которго можно было бы избежать, заменив ссылку на указатель. А когда таких мест становится много, то текст программы начинает превращаться в помойку. Одно из программерских искусств - это писать программу понятно, чтобы и без лишних комментариев было всё очевидно
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 18:54 #28
А где тут лишние ?
Цитата Сообщение от Evg Посмотреть сообщение
Комментарий, которго можно было бы избежать, заменив ссылку на указатель.
Ну нельзя избежать, если вы дали ф-ции неадекватное имя, и свалили на нее несколько разных действий вместо одной.
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
31.01.2013, 19:00 #29
Цитата Сообщение от Avazart Посмотреть сообщение
К примеру
Код C++
1
change_dir(Dir);
Тут и коменты не нужны...
А что будет внутри меняться? Сам Dir или значение, которое в нем хранится?
Тогда, как передача двойного указателя в эту функцию будет говорить, что изменятся будет сам указатель, а не то содержимое(но оно тоже может) которое он содержит.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
А где тут лишние ?
Это лишний комментарий. Как написал уже Evg при их большом количестве код превратиться в помойку, а разгрибать этот мусор потом другому человеку, который проклянет того, кто это написал.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
31.01.2013, 19:19 #30
Цитата Сообщение от Croessmah Посмотреть сообщение
А что будет внутри меняться? Сам Dir или значение, которое в нем хранится?
Тогда, как передача двойного указателя в эту функцию будет говорить, что изменятся будет сам указатель, а не то содержимое(но оно тоже может) которое он содержит.
А тут уже от логики зависит всей программы ... ясно что читающий должен быть смотреть в контексте программы а не так обобщенно как в этом примере.

Цитата Сообщение от Croessmah Посмотреть сообщение
Это лишний комментарий. Как написал уже Evg при их большом количестве код превратиться в помойку, а разгрибать этот мусор потом другому человеку, который проклянет того, кто это написал.
Не вижу проблем в тех же stl -хедерах тоже есть комментарии что тут плохого?
Тем более когда нужно объяснить что делает ф-ция одним & явно не обойтись.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2013, 19:19
Привет! Вот еще темы с ответами:

Использование стандартной библиотеки С. Char и опции консольного приложения - C++
Всем привет. Сломал уже голову над тем, как можно в С++ из char вытащить число. В char передаются аргументы при запуске консольного...

Использование знака пробел при вводе переменной типа char[] - C++
Доброго времени суток! При идентификации переменных при применении знака пробел, все, что идет до него "уходит" в первую переменную,...

Подскажите простой способ копирования с string в char - C++
strcpy( Mass, X.c_str() ); не подходит

Подскажите, как создать одномерную, динамическую строку типа char - C++
Подскажите, как создать одномерную, динамическую строку типа char. И что бы символы вводились с клавиатуры)))


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

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

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