14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
1

о правильности написания

25.02.2013, 21:58. Показов 667. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Есть неясности:

Имеем функцию:
C++
1
void foo(int* i);
Как правильнее ее описать и вызывать?

В книгах выдел 2 варианта:

C++
1
2
3
4
5
void foo(int* i)
{
 return *i+*i;
}
// при этом вызов был foo(i);
и

C++
1
2
3
4
5
void foo(int* i)
{
 return i+i;
}
// при этом вызов был foo(&i);
Мне ближе 2ой тип,но вдруг это не совсем правильно. Дайте совет. Всем добра
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2013, 21:58
Ответы с готовыми решениями:

Функция проверки правильности написания адреса почты (DevC++)
Написать функцию проверки правильности написания адреса почты. Функция возвращает указатель на...

Функция для проверки правильности написания адреса почты
Написать функцию проверки правильности написания адреса почты. Функция возвращает указатель на...

Небольшой шаблонный класс matrix: комментарии/критика относительно кода с точки зрения правильности написания
В плане своего общего развития написал не большой шаблонный класс matrix. Хочу поделиться своей...

Проверка правильности написания Жи Ши
Здравствуйте. Нужна помощь с задачкой: с клавиатуры вводится многострочный текст. Составить...

7
837 / 344 / 67
Регистрация: 20.11.2012
Сообщений: 795
25.02.2013, 22:08 2
Цитата Сообщение от NinGAZ Посмотреть сообщение
Как правильнее ее описать и вызывать?
Оба варианта неправильны по многим причинам.
void - это ничто. Функция void не должна возвращать значения.
return i+i; "возвращает" адрес умноженный на два.
return *i+*i; - значение по адресу i умноженное на два.
1
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
25.02.2013, 22:12 3
Такой вопрос, а почему в функции вы используете тип void? Если, как я понял вы хотите вернуть тип int.
0
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
25.02.2013, 22:13  [ТС] 4
косяк,согласен. суть была не в типе возвращаемого,а описании при отправке адреса/указателя
0
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
25.02.2013, 22:38 5
Еще один вопрос, а переменная i - типа int, или указатель на тип int?
Если это не указатель, то у Вас программа скомпилироваться не должна. По-моему, выйдет ошибка can not convert from int to int*.
У Вас работает?
0
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
26.02.2013, 21:27  [ТС] 6
я вообще вчера был в неадеквате,за что очень стыдно.. в общем писал программу со списками,и получались такого рода ф-и:

C++
1
2
3
4
5
void push(dyn_list* list)//вызов push(&list);
{
//а дальше реализация без указателей,то есть
//list->last->next и тому подобное
}
Все работает,но мне не дает покое сам факт моего написания. В одних вариантах везде указаны указатели явно
C++
1
2
3
4
void cube(int* x)
{
 *i= *i * *i * *i;
}
а у меня по сути они не указываются. Или это так при работе со структурами?
0
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
27.02.2013, 03:40 7
Цитата Сообщение от NinGAZ Посмотреть сообщение
void cube(int* x)
{
**i= *i * *i * *i;
}
Во первых в аргументах функции, наверное, i. А во вторых, мы передаем в функцию указатель на тип int. И чтобы умножить значение (не адрес!) нам надо его разыменовать.

Добавлено через 5 минут
Цитата Сообщение от NinGAZ Посмотреть сообщение
void push(dyn_list* list)//вызов push(&list);
{
//а дальше реализация без указателей,то есть
//list->last->next и тому подобное
}
Здесь ты тоже можешь разыменновать свой класс, а еще для этого придумали "->", что по-моему удобнее, чем писать каждый раз *(MyClass).method.
Но каким вариантом пользоваться выбирай сам.
1
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
27.02.2013, 18:48  [ТС] 8
Nikcharn, спасибо! очень емко и то что нужно. я как-то упустил разыменовывание,это и ввело в ступор.
0
27.02.2013, 18:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2013, 18:48
Помогаю со студенческими работами здесь

Вычисление правильности написания корней
Ребят помогите,в VB я новичок,а для зачета нужна программа... Правильность написания в русском...

Проверка правильности написания матрицы
Написал проверку, вроде как рабочую, но проблема в том, что компилятор выдаёт предупреждение:...

Оценка правильности написания кода
Вечер добрый. В учебных целях написал программу которая переводит значение угла из вида 11.0°...

Затруднение в правильности написания кода
Пожалуйста, помогите решить проблему. Много вариантов перепробовала, ничего особо не получалось,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru