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

Указатели и ссылки? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ векторы и итераторы http://www.cyberforum.ru/cpp-beginners/thread762391.html
void delete_duplicate_neiron(vector<vector <SNeiron> ::iterator >nw) // контейнер имеет 8 значений { for (unsigned int i = 0; i < nw.size() ; i++) { vector <SNeiron> ::iterator ni = nw; for (unsigned int j = 0; j < nw.size() ; j++) { vector <SNeiron> ::iterator nj =nw; if(i == j) continue;
C++ Указатель и массив #include <iostream> #include <conio.h> using namespace std; int main () { setlocale (0,""); int *a,size; cout << "Укажите размер массива: "; cin >> size; a=(int*)malloc(size*sizeof(int)); http://www.cyberforum.ru/cpp-beginners/thread762369.html
Числа по основанию 8 и 4. Выполнить операцию деления C++
Числа по основанию 8 и 4. Выполнить операцию деления. Добавлено через 4 часа 38 минут Помогите пожалуйста, я знаю алгоритм, но не знаю, как реализовать на языке c++.
Перевод из системы по основанию 16 в систему по основанию 10 C++
Перевод из системы по основанию 16 в систему по основанию 10 Добавлено через 21 минуту Помогите пожалуйста написать программу
C++ Вызов функции http://www.cyberforum.ru/cpp-beginners/thread762348.html
Укажите правильный вариант вызова функции вместо пропуска …….. void func(int *p, int n, float k) { } main( ) { int A={2,1,4}, m=3; ……………………….. }
C++ Есть ли какие то статьи про графику в DOS? Есть приложения которые в консолях используют "какую то магию" например FAR там вполне себе графическая оболочка. Мне не совсем ясно как в консоли изменять элемент не перерисовывая весь экран через cls .. Например поле для крестиков ноликов: Как заполнять ячейки не очищая экран? Ну или нарисовать падающий ящик ... подробнее

Показать сообщение отдельно
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151

Указатели и ссылки? - C++

15.01.2013, 15:40. Просмотров 241. Ответов 4
Метки (Все метки)

Ниже приведёна программы которая вызывает функцию. В функции происходит следующее создаются 2 массива в которые записыватся чётные и нечётные числа соответственно. Не понимаю следующего, если я передаю в функцию просто указатели на массивы int* first, int* second, то в нутри функции создаются динамические массивы и после окончания работы функции указатели снова становятся нулевыми, а если передать ссылки на указатели (int*& first, int*& second) тогда всё работает должным образом, созданные массивы после окончания работы функции остаюся доступными.
Почему указатели после работы функции обнуляюся? Они же созданы вне функции и значения должны были бы остаться, ведь одним из их предназначения и есть передача их в функции как параметров и манипуляции с их помощью?

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<time.h>
#include<iostream>
using namespace std;
void sort(int arry[], int size, int*& first, int*& second, int& sizeFirstLink, int& sizeSecondLink );
void main()
{
    const int size = 10;
    int arry[size];
    int* first = NULL;
    int* second = NULL;
    int i = 0, sizeFirst = 0, sizeSecond = 0;
    int& sizeFirstLink = sizeFirst;
    int& sizeSecondLink = sizeSecond;
    srand (time(NULL));
    for(int i = 0; i<10; i++) arry[i] = rand()%10 + 1;
    for(int i = 0; i<10; i++) cout<<arry[i]<<" ";
    cout<<endl;
    sort(arry, size, first, second, sizeFirstLink, sizeSecondLink );
    for(int i = 0; i<sizeFirst; i++) cout<<first[i]<<" ";
    cout<<endl;
    for(int i = 0; i<sizeSecond; i++) cout<<second[i]<<" ";
        cout<<first<<" "<<second<<endl;
        cout<<sizeFirst<<" "<<sizeSecond<<endl;
        cout<<sizeFirstLink<<" "<<sizeSecondLink<<endl;
}
void sort(int arry[], int size, int*& first, int*& second, int& sizeFirstLink,int& sizeSecondLink )
{
    int i, f=0, s=0;
    for(i = 0; i<size; i++)
        arry[i]%2 ? sizeFirstLink++: sizeSecondLink++;
    first = new int[sizeFirstLink];
    second = new int[sizeSecondLink];
    for(i = 0; i<size; i++)
    {
        if(arry[i]%2)
        {
            first[f]=arry[i];
            f++;
        } 
        else 
        {
            second[s] = arry[i];
            s++;
        }
    }
    for(int i = 0; i<sizeFirstLink; i++) cout<<first[i]<<" ";
    cout<<endl;
    for(int i = 0; i<sizeSecondLink; i++) cout<<second[i]<<" ";
        cout<<endl;
    cout<<first<<" "<<second<<endl;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru