Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
balrak
6 / 6 / 0
Регистрация: 01.04.2012
Сообщений: 81
#1

Копия массива(Функция)

06.06.2012, 13:17. Просмотров 901. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int* copy(int* a)
{
    int mass[sizeof(a)+1] = {};
    for(int i = 0; i <= sizeof(a); i++)
    {
        mass[i] = a[i];
        std::cout << mass[i] << " \n"; // почему тут выводится нормально
    }
    for(int i = 0; i <= sizeof(mass); i++)
        std::cout << mass[i] << "\n"; // а в этом месте совсем не нормально 
    return mass;
}
 
int main()
{
    int mass[5] = {20,19,5,9,2};
    int* new_mass = copy(mass);
    std::cout << sizeof(new_mass) << " \n";
    for(int i = 0; i <= sizeof(new_mass); i++)
        std::cout << new_mass[i] << " ";
    std::cout << std::endl;
}
Копирует массив в функции не праильно . Я что то путаю с указателями . Помогите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 13:17
Ответы с готовыми решениями:

Копия двумерного динамического массива
Как создать копию двумерного динамического массива? Имеется двумерный...

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5;...

Как передавать массив по ссылке, чтобы не работала копия массива?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int Min (int...

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

Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости
Ребята, подскажите, кто может, каким образом создать функцию с применением...

6
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.06.2012, 13:23 #2
Цитата Сообщение от balrak Посмотреть сообщение
return mass;
возвращаешь локальный массив

Добавлено через 43 секунды
Цитата Сообщение от balrak Посмотреть сообщение
int mass[sizeof(a)+1]
размер этого массива на 32-х битных машинах всегда равен 5-ти
1
Andrey.K
344 / 265 / 128
Регистрация: 14.11.2010
Сообщений: 482
06.06.2012, 13:27 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
int* copy(int* a)
{
    for(int i=0;i<5;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    return a;
}
 
int main()
{
    int mas[5]={1,2,3,4,5};
    int* newMass=new int[5];
    newMass=copy(mas);
    for(int i=0;i<5;i++)
        cout<<newMass[i]<<" ";
    getch();
    return 0;
}
1
balrak
6 / 6 / 0
Регистрация: 01.04.2012
Сообщений: 81
06.06.2012, 13:30  [ТС] #4
Jupiter, а можешь поподробней пожалучта
не понял я тебя

Добавлено через 3 минуты
Andrey.K, ты можешь обьяснить что в моем коде не так?
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.06.2012, 13:35 #5
balrak, после выхода из тела функции, созданные в ней локальные переменные недоступны
1
Andrey.K
344 / 265 / 128
Регистрация: 14.11.2010
Сообщений: 482
06.06.2012, 13:45 #6
Цитата Сообщение от balrak Посмотреть сообщение
Jupiter, а можешь поподробней пожалучта
не понял я тебя

Добавлено через 3 минуты
Andrey.K, ты можешь обьяснить что в моем коде не так?
Ты передаешь в свою ф-ю массив. Далее там делаешь копию этого массива, который копируется в локальный массив в твоей ф-ии. Локальный значит виден в том блоке,где создан, а затем созданный массив пытаешься вернуть в другую ф-ю(в нашем случае main()). Оно возвращает мусор.
1
balrak
6 / 6 / 0
Регистрация: 01.04.2012
Сообщений: 81
06.06.2012, 13:47  [ТС] #7
Jupiter,
Andrey.K,
Спасибо . теперь разобрался
0
06.06.2012, 13:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 13:47

Функция, которая удаляет из целочисленного одномерного массива все, и возвращает новый размер массива
Разработать и испытать функцию, которая удаляет из целочисленного одномерного...

Написать программу:функция что возвращает элемент массива,и удаляет этот элемент з массива
Написать программу:функция что возвращает элемент массива,и удаляет этот...

Функция: среднее арифметическое положительных элементов массива и отрицательных элементов массива
задача:найти среднее арифметическое положительных элементов массива и...


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

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

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