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

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

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

Передать ссылку на массив из одной функции во вторую - C++

14.05.2014, 03:26. Просмотров 395. Ответов 6
Метки нет (Все метки)

Как передать ссылку на массив из одной функции во вторую, если в первый мы его инициализируем, а во второй заполняем?
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
#include <iostream>
#include <iomanip>
#include  <math.h>
using namespace std;
 
double vvod(int n,int m,int a,int b)
{
    double **G,*B,*C,*P,*nev;
    C=new double[n];
    B=new double[n];
    P=new double[21];
    nev=new double[21];
    
     G = new double*[n];
    for (int i=0; i<n; i++)
        G[i]= new double[n];
    
    double *x_i = new double[m];
    double *x_j = new double[m];
    double *y_i = new double[m];
    double *y_j = new double[m];
}
double x_y(double *x_i, double *x_j,double *y_i,double *y_j,int m, int a,int b)
{
        for(int i=1; i<=m; i++)
        {
        x_i[i-1]=a+(i-1)*(b-a)/(m-1);
        y_i[i]=pow(sin(x_i[i]),2)-3*cos(x_i[i]);
        }
    for (int j=0; j<21; j++)
        {
        x_j[j-1]=a+(j-1)*(b-a)/20;
        y_j[j]=pow(sin(x_j[j]),2)-3*cos(x_j[j]);
        }
        return *x_i,*x_j,*y_i,*y_j;
}
main()
{   
    setlocale(LC_ALL, "Russian");
    int n,m,a,b;
    cout << "×èñëî Г*åèçâåñòГ*ûõ=";
    cin >> n;
    cout << "\n ×èñëî óçëîâ=";
    cin >> m;
    cout << "ГЌГ*Г·Г*ëî ГЁ ГЄГ®Г*ГҐГ¶ ГЁГ*òåðâГ*Г«Г*";
    cin >> a >> b;
    vvod(n,m,a,b);
 
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 03:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать ссылку на массив из одной функции во вторую (C++):

Как передать массив из одной функции в другую? - C++
Нужна помощь. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int vod(int a) { int a, i; for (i = 0; i &lt; 12;...

Как передать массив из одной функции в другую - C++
Ребят помогите с массивами,алгоритм составил а с языком пока на &quot;ВЫ&quot;. как таскать массив из процедуры в процедуру. перехожу с паскаля...

Передать в массив I(5) вторую половину массива J(10). - C++
помогите:Передать в массив I(5) вторую половину массива J(10).

Передать значения двумерного массива из функции через ссылку - C++
Функция создаёт и заполняет статический двумерный массив. Как, вызвав эту функцию, можно передать созданный в ней массив массиву извне при...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

Передать данные из одной функции в другую и т.д. - C++
Добрый день, подскажите пожалуйста, как передать данные из одной функции в другую, уже весь мозг себе вынес. Вообщем есть 3 функции, в...

6
S_el
2113 / 1633 / 308
Регистрация: 15.12.2013
Сообщений: 6,401
14.05.2014, 08:18 #2
andryshka, массивы всегда по ссылке передаются.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
 
void my_func(double *arr,int size);
void main()
{
int i,j,n;
cout<<"vvedute razmer massuva:"<<endl;
cin>>n;
double *arr=new double[n];
 
my_func(arr,n);
for(j=0;j<n;j++)
cout<<arr[j]<<" ";
}
 
void my_func(double *arr,int size)
{
for(int i=0;i<size;i++)
arr[i]=2*i; 
}
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,015
Завершенные тесты: 1
14.05.2014, 08:21 #3
Цитата Сообщение от S_el Посмотреть сообщение
массивы всегда по ссылке передаются.
Передается указатель на первый элемент массива, а не ссылка.
0
S_el
2113 / 1633 / 308
Регистрация: 15.12.2013
Сообщений: 6,401
14.05.2014, 08:24 #4
Цитата Сообщение от zss Посмотреть сообщение
Передается указатель на первый элемент массива, а не ссылка.
Верное замечание.
Кстати,поправьте если ошибаюсь,ссылка это замаскированный указатель?
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
14.05.2014, 20:04 #5
andryshka, Посмотрел код... мурашки по коже... У тебя память течет как река в океан.

А массив заполнить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template<typename T, int N>
T (&fill(T (&array)[N], T value))[N] {
    for (int i = 0; i < N; ++i)
        array[i] = value;
    return array;
}
     
 
int main(int argc, char **argv) {
    int a[5];
    for (auto e: fill(a, 4)) 
        std::cout << e << ' ';
    std::cout << std::endl;
}
Только это только для массивов а не для указателей. Если передашь вместо массива указатель на массив компилятор не сможет узнать размер массива. Для динамических массивов... я обхожусь указателями...
0
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
14.05.2014, 21:31  [ТС] #6
Цитата Сообщение от outoftime Посмотреть сообщение
А массив заполнить так
Я слишком туп...Что есть value?
C++
1
template<typename T, int N>
это шаблон?Я с ними раньше не сталкивался, поправьте и дополните, если, что не верно скажу?Но как я понял мы передаём в шаблон длину массива и тип Т, но я не понимаю, что есть typename он объявляет тип данных?Каким образом он его представляет(это же не вещественный или целочисленый тип)?
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
14.05.2014, 23:23 #7
Цитата Сообщение от andryshka Посмотреть сообщение
Я с ними раньше не сталкивался
Самое время почитать литературу, ну или погуглить на крайняк.

Цитата Сообщение от andryshka Посмотреть сообщение
Что есть value?
Идентификатор имени переменной написанный на английском языке.

В двух словах, шаблон надо просто для того что-бы была возможность работать с массивами типа
C++
1
const int array[]
В отличии от обычного указателя
C++
1
const int *array
Первый вариант неявно содержит в себе информацию о размере массива и что-бы узнать с массивом какого размера прибегают к использованию шаблона
C++
1
2
3
4
5
template<int N>
void something(int (&array)[N]);
// main
int a[5];
something(a); // размер не указывается но за счет шаблона он известен
Такая же конструкция используется для возвращения массива определенной длины
C++
1
2
template<int N>
int   (&   something(int (&array)[N])   )[N];
Я выделил составляющие 3мя пробелами.
1
14.05.2014, 23:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 23:23
Привет! Вот еще темы с ответами:

Передать значение из одной функции в другую - C++
Нужно значение max передать в другую функцию Потерялся в указателях :С int MaxEvaluation(Abiturient mas, int x, double *max ){ ...

Как переменную из одной функции передать в другую? - C++
у меня надо переменную index из функции maxi передать в функцию summa #include &quot;stdafx.h&quot; #include &quot;math.h&quot; #include &quot;iostream&quot; ...

Как передать значение из одной функции в другую? - C++
Как передать значение s из функции main() в функцию poisk()? Как передать значение i из функции poisk() в функцию main()? Если...

Передать значение из одной функции в другую функцию в связном списке - C++
Как можно передать значение из одной функции в другую функцию в связном списке? Например у меня есть функция поиска максимального...


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

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

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