Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
#1

Чем отличаются эти функции? - C++

24.10.2013, 10:40. Просмотров 449. Ответов 9
Метки нет (Все метки)

Аргумент в первой функции передается по значению. Это значит что создается копия переменной.
А вот остальные не понимаю.

C++
1
2
3
4
void f1(int a)      { a = a * a; }
void f2(int &a)     { a = a * a; }
void f3(int *a)     { *a = *a * *a; }
void f4(int *&a)    { *a = *a * *a; }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 10:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чем отличаются эти функции? (C++):

Чем отличаются эти два способа изменения типа данных? - C++
В книге Лафоре дают такой способ int buf; ofstream os("edata.dat",ios::binary); ...

Чем отличаются функции cprintf и printf? - C++
подскажи чем отличаются функции cprintf и printf

Чем отличаются функции strcpy и strcpy_s - C++
Подскажите в чем отличаются функции: strcpy от strcpy_s, sprintf от sprintf_s, strcat от strcat_s, и т.д. И какой вариант...

Чем отличаются указатель в теле функции и в аргументе - C++
Здравствуйте. Не могу разобраться чем, в данном случае: bool LexAnalysis(const char* text) { const char *str = text; const char...

Два файла с символами: получить номер первого элемента, в котором эти файлы отличаются - C++
дано два файла с одинаковым количеством компонент, компонентами которого являются символы выяснить совпадают ли попарно их компоненты, если...

Чем отличаются компиляторы? - C++
Здравствуйте. 32-bit / 64-bit -- Понятно. Чем отличается threads-win32 от threads-posix, dwarf от sjlj?

9
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
24.10.2013, 10:46 #2
BurnItDown, 2) Аргумент передается по ссылке - после выхода из функции значение переменной на которую ссылается a будет a * a.
3) Аргумент передается по указателю - после выхода из функции значение переменной на которую указывает a будет *a * *a.
4) Аргумент передается по ссылке на указатель. В данном случае тоже самое что и 3.
0
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
24.10.2013, 11:05  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
2) Аргумент передается по ссылке
А что это означает "передача по ссылке"?

Вот такой небольшой пример
C++
1
2
3
int n = 10;
 
f2(n);
Что здесь передается в функцию?
0
oxotnik
1591 / 1068 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
24.10.2013, 11:08 #4
Цитата Сообщение от BurnItDown Посмотреть сообщение
А что это означает "передача по ссылке"?
Значит объект не копируется а ему дается альтернативное имя, и ф ф-ции оперируем этим объектом.
Цитата Сообщение от BurnItDown Посмотреть сообщение
Что здесь передается в функцию?
Копия объекта, т.е. Другой огбъект
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
24.10.2013, 11:18 #5
oxotnik, Здесь как бы по ссылке передается, с чего она копия-то? fn2 ссылку принимает.
0
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
24.10.2013, 11:23  [ТС] #6
Ладно, я еще подумаю об этом. Сейчас не могу понять

Объясните в чем разница между этими функциями
C++
1
2
void f2(int &a)     { a = a * a; }
void f3(int *a)     { *a = *a * *a; }
Добавлено через 2 минуты
Пожалуйста
0
oxotnik
24.10.2013, 11:39
  #7

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
fn2 ссылку принимает.
ах, ну да, я как то не подумал, что в контексте 1-го поста был этотт код

0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
24.10.2013, 11:42 #8
BurnItDown, В первом случае подается ссылка и вызов будет такой

C++
1
2
int a = 0;
fn(a);
Во втором случае указатель - вызов будет через указатель

C++
1
2
int a = 0;
fn(&a);
А вообще, ИМХО, стоит книжку почитать бы.
1
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,553
Завершенные тесты: 1
24.10.2013, 11:53 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
 
 
void f2(int &a) { a =  a *  a; std::cout << &a << std::endl; }
 
void f3(int *a) {*a = *a * *a; std::cout << &a << std::endl; }
 
int main()
{
int a;
std::cout << &a << std::endl;
 
f2(a);
f3(&a);
 
}
Название: ScreenShot.JPG
Просмотров: 43

Размер: 1.9 Кб
Чем отличаются эти функции?
2
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.10.2013, 11:59 #10
Цитата Сообщение от BurnItDown Посмотреть сообщение
Ладно, я еще подумаю об этом. Сейчас не могу понять

Объясните в чем разница между этими функциями
C++
1
2
void f2(int &a)     { a = a * a; }
void f3(int *a)     { *a = *a * *a; }
Добавлено через 2 минуты
Пожалуйста
Практически ничем, только записью, в первом случае передается указатель на конкретный обьект, во втором просто указатель на любой int, в любом случае передается адрес обьекта.
1
24.10.2013, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 11:59
Привет! Вот еще темы с ответами:

чем отличаются static_cast от - C++
Привет всем! чем отличаются явное приведения типа long tmp = static_cast&lt;long&gt;(45.6); от long tmp = long(54.34); ?

Чем отличаются операторы while и for? - C++
Добрый вечер, чем отличается while от for, в каких случаях нужно использовать while а в каких for?

Чем отличаются указатели от ссылок? - C++
Как я понимаю указатель,он хранит адрес переменной,а ссылка просто берёт значение переменной?Привидите примерчик какой=)

Чем отличаются dynamic_cast и static_cast? - C++
если можно пример напишите


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

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

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