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

Передача массивов и параметров с одной функции в другую - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструктор копии http://www.cyberforum.ru/cpp-beginners/thread811420.html
Конструктор копии вызывается при: 1)явном создании копии 2)при передачи параметров в функцию (по значению) 3)при возвращении объекта из функции напиши пожалуйста примеры
C++ Подскажите отладить запись в файл и считывание с него Я написал программу, она работает с использованием fprintf() и fscanf(), но задание сделать с fwrite() и fread() - вот с ними у меня выводит бред в файл тоже записывает бред.. #include <stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread811411.html
C++ Вычислить сумму делителей некоторого числа СН
#include <stdlib.h> #include <iostream.h> #include <math.h> main () {long ch,d,sumdel; float c; clrscr(); ch=(1+rand()% 999); cout<<"generator random chesil vidal...
operator char() или operator int() C++
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он описывает класс String в нем есть вложенный класс Cref как бы имитирующий char. И от надыбал я там...
C++ Задача на одномерный массив http://www.cyberforum.ru/cpp-beginners/thread811385.html
Дана задача: "Лесенка" Вова стоит перед лесенкой из N ступеней. На каждой из ступеней написаны произвольные целые числа. Первым шагом Вова может перейти на первую ступень или, перепрыгнув через...
C++ написал программу, ошибка! Info :Compiling C:\BC5\BIN\zadacha 3.cpp Warn : zadacha 3.cpp(25,3):'c' is assigned a value that is never used вот такая ошибка вылетает не знаю что делать #include <conio.h> #include... подробнее

Показать сообщение отдельно
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.03.2013, 09:41
C++
1
Вектора к сожалению тут не проконают, нужен динамический массив. Попробую использовать ссылку, спасибо=)
Вот это вот неправда. Вектор сделан специально так, чтобы заменить собой динамические массивы.

Добавлено через 8 минут
допустим заранее вам нужно вызвать функию, которая принимает указатель на массив, чтобы его заполнить. И изменить сигнатуру этой функции нельзя:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 // вот эта функция, изменить которую вы не можете.
void libFunction(int* arr, unsigned arrSize);
 
void myFunction(std::vector<int>& v)
{
   v.resize(100);
   libFunction(&v[0], v.size()); // вектор подходит
}
 
int main()
{
   std::vector<int> v;
   myFunction(v);
}
Второй вариант, когда функция, изменить которую вы не можете сама выделяет массивы динамически:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// вот эта функция, изменить которую вы не можете.
// она выделяет массив. на выходе указатель на этот массив и его размер
void libFunction(int** arr, unsigned* arrSize);
 
void myFunction(std::vector<int>& v)
{
   int* arr = 0;
   unsigned size = 0;
   libFunction(&arr, &size);
   v.assign(arr, arr + size); // да, тут получается лишнее копирование, но код с векторами проще.
   delete [] arr;                // не нужно везде следить за тем, что нужно удалить, а что не нужно.
}
 
int main()
{
   std::vector<int> v;
   myFunction(v);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru