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

Передача массива в функцию - что на самом деле предается? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удаление структуры из массива структур http://www.cyberforum.ru/cpp-beginners/thread921645.html
Допустим имеется структура ... struct WORKER { char familiya; char name; char otchestvo; }; ...
C++ Шаблонный класс list, собственная реализация Привет всем. Я по чуть-чуть пишу шаблонный класс list с добавлением элементов в начало списка. Уже на свой страх и риск реализовал три метода. Хотел бы услышать ваше мнение про метод remove_all(). Не допустил ли я, каких либо утечек памяти в нём? #include <iostream> using namespace std; template <class type> class list { public: list() { items = nullptr; http://www.cyberforum.ru/cpp-beginners/thread921636.html
C++ Методы init() и dispose() - теория
Всегда интересовало, зачем существуют эти методы? Допустим, есть некоторый объект класса и в коде видим: x = new myClass(); x.init(); ... x.dispose(); delete x; Одно дело, если бы в эти методы передавались параметры, а другое дело это. Разве не проще было бы весь код init поместить в конструктор, а dispose, соответственно, в деструктор?
немогу разобраться с переменной C++ C++
Объясните пожалуйста, вот есть переменные int, char, float и т.д а, в некоторых функциях есть параметр, для которого надо указать переменную типо const char *str или char *str, что это значит???
C++ Вывести число с тремя цифрами после запятой http://www.cyberforum.ru/cpp-beginners/thread921618.html
Э. Кенинг. Эффективное программирование на C++ есть одна задача и в ней таким способом это сделано: небольшую часть программы покажу, остальное не имеет значения std::streamsize prec; prec = std::cout.precision(); std::cout << "Ваша итоговая оценка равна " << std::setprecision(3) << 0.2*midterm + 0.4*final + 0.4*sum/count << std::setprecision(prec) << std::endl; Но все равно после...
C++ Первое пятнадцатизначное число Фибоначчи Даны числа Фибоначчи 1 1 2 3 5 8 13 21... Найти первое число Фибоначчи, которое содержит 15 цифр. Никак не можем решить уже. помогите плиз. Вот формула Фибоначчи "fib = fib+fib;" Спасибо заранее) подробнее

Показать сообщение отдельно
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
11.07.2013, 17:51     Передача массива в функцию - что на самом деле предается?
Имя массива это константный указатель.
Когда мы передаем его в функцию
C++
1
void f1(int *iArray)
f1 это происходит как pass by reference. В этой функции можно менять значения элементов массива и делать так
C++
1
iArray++
.
Теперь вопрос.
Делая так
C++
1
iArray++
мы изменяем адресс начала массива?
Но как это возможно, если Имя массива это константный указатель
А вот пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void f1(int *, int );
 
int q=444;
int *ptr=&q;//получаем левый адресс в памяти
 
int _tmain(int argc, _TCHAR* argv[])
{
           const int Size = 4
    int iArray[Size] = {2,3,4,5};
    f1(iArray, Size);
    cout << endl << ptr << ' ' << qa;
    _getch();
    return 0;
}
 
void f1(int *a, int n)
{
    int i=0;
    while (i<n)
    {
        cout << &a << endl;
        *a = 777;
        i++; 
        a++;
    }
    a=ptr; //присваиваем началу массива исходного "левый" адресс 
}
В итоге, что мы получим iArray будет указывать непонятно-куда?
И почему
C++
1
cout << &a << endl;
выдает один и тот же адресс ведь мы делаем а++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru