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

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

Восстановить пароль Регистрация
 
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
06.06.2012, 13:17     Копия массива(Функция) #1
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;
}
Копирует массив в функции не праильно . Я что то путаю с указателями . Помогите
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 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-ти
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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;
}
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
06.06.2012, 13:30  [ТС]     Копия массива(Функция) #4
Jupiter, а можешь поподробней пожалучта
не понял я тебя

Добавлено через 3 минуты
Andrey.K, ты можешь обьяснить что в моем коде не так?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.06.2012, 13:35     Копия массива(Функция) #5
balrak, после выхода из тела функции, созданные в ней локальные переменные недоступны
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
06.06.2012, 13:45     Копия массива(Функция) #6
Цитата Сообщение от balrak Посмотреть сообщение
Jupiter, а можешь поподробней пожалучта
не понял я тебя

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

Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости C++
C++ Функция сортировки массива
Функция заполняющая массив и функция вывода массива C++

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

Или воспользуйтесь поиском по форуму:
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
06.06.2012, 13:47  [ТС]     Копия массива(Функция) #7
Jupiter,
Andrey.K,
Спасибо . теперь разобрался
Yandex
Объявления
06.06.2012, 13:47     Копия массива(Функция)
Ответ Создать тему
Опции темы

Текущее время: 16:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru