Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 05.12.2013
Сообщений: 81

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

14.05.2014, 03:26. Показов 1345. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 03:26
Ответы с готовыми решениями:

Как из одной функции передать переменную во вторую функцию
В документе index.html находится скрипт, код которого приведен ниже. По ID='my' нахожу содержимое тега, и делаю в нем замену с помощью...

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

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

6
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
14.05.2014, 08:18
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
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
14.05.2014, 08:21
Цитата Сообщение от S_el Посмотреть сообщение
массивы всегда по ссылке передаются.
Передается указатель на первый элемент массива, а не ссылка.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
14.05.2014, 08:24
Цитата Сообщение от zss Посмотреть сообщение
Передается указатель на первый элемент массива, а не ссылка.
Верное замечание.
Кстати,поправьте если ошибаюсь,ссылка это замаскированный указатель?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
14.05.2014, 20:04
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
2 / 2 / 1
Регистрация: 05.12.2013
Сообщений: 81
14.05.2014, 21:31  [ТС]
Цитата Сообщение от outoftime Посмотреть сообщение
А массив заполнить так
Я слишком туп...Что есть value?
C++
1
template<typename T, int N>
это шаблон?Я с ними раньше не сталкивался, поправьте и дополните, если, что не верно скажу?Но как я понял мы передаём в шаблон длину массива и тип Т, но я не понимаю, что есть typename он объявляет тип данных?Каким образом он его представляет(это же не вещественный или целочисленый тип)?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
14.05.2014, 23:23
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2014, 23:23
Помогаю со студенческими работами здесь

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

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

Как передать массив обьектов из одной функции в другую?
Есть метод. Он принимает массив обьектов. И (:good:) создает из него нового размера новый массив обьектов , и я успешно его печатаю. ...

Как передать ссылку на экземпляр класса с одной формы на другую
Как передать ссылку на экземпляр класса с одной формы на другую?

Как правильно передать ссылку на экземпляр объекта из одной формы в другую?
Добрый день. Подскажите пожалуйста, как правильно передать ссылку на экземпляр объекта из одной формы в другую? Основная идея такая:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru