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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.68
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
#1

Передача переменных в массив - C++

08.07.2009, 10:21. Просмотров 4949. Ответов 18
Метки нет (Все метки)

Надо решить небольшую проблему есть следующий массив

C++
1
 BYTE array [4]= { 0xff,0x00,0x00,0x00};
хочу за место цифры 4 поставит переменную и ей уже присвоить значение то же самое и со значением массива например:

C++
1
2
3
int i =1;
byte zn = { 0xff,0x00,0x00,0x00};
BYTE array [i]= zn;
Следующий код почему то не работает пожалуста укажите на мой ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2009, 10:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача переменных в массив (C++):

Передача переменных - C++
Имеется метод void Question::reg(Date* a) { int year1,day1,hour1,min1,sec1; char* Mon1; year1=a->getYear(); ...

Передача переменных в поток - C++
Вот никак не могу разобраться, как передать переменную в функцию потока. Вот например есть код: DWORD WINAPI Ms(LPVOID pr) { ...

Передача переменных в функцию - C++
#include <iostream> int fun(int x, int y, int z); int main() { int x, y, z;

Передача значений переменных функциями - C++
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки). int clearstr(student& a) { delete a.pi; ...

Передача переменных из функции в метод класса - C++
У меня есть главная функция и класс, в котором есть 2 функции. Как мне после выполнения 1-й функции с класса вывести с нее 3 переменных...

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

18
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.07.2009, 10:34 #2
пожалуста укажите на мой ошибки
ты используешь компилятор, несовместимый со стандартом С99, либо эта возможность не активирована.
1
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
08.07.2009, 10:34 #3
Во-первых, не существует такого типа byte (если только он не определен при помощи typedef или #define).
Во-вторых (допуская, что byte соответствует типу unsigned char), С++ не позволяет обычной переменной присваивать сразу несколько значений.
И в третьих, использовать переменные массивы позволяют далеко не все компиляторы (для этого они должны поддерживать стандарт С99)
1
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 10:50  [ТС] #4
использую c++ builder 6
0
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.07.2009, 10:53 #5
http://ru.wikipedia.org/wiki/%D0%A1%...8%D1%8F%29#C99

Интерес к поддержке новых особенностей С99 в настоящее время смешан. В то время как GCC, компилятор Си от Sun Microsystems и некоторые другие компиляторы в настоящее время поддерживают большую часть новых особенностей С99, компиляторы компаний Borland и Microsoft не делают этого, причём похоже, что две эти компании и не думают их добавлять.
1
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 11:07  [ТС] #6
C++
1
2
3
4
5
int i = 0xff ;
int zn  = i ;
int zn1  = 0xff ;
 
int array [2]= {zn,zn1};
Вот это работает но это не выход

Добавлено через 6 минут 50 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//10.Функция для сохранения бинарных значений из реестра (передать переменные с путем и параметром реестра)
void reg_save_bin(AnsiString root, AnsiString dur, AnsiString name, BYTE znachenie)
{ TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
// выбираем нужный корень
reg->RootKey = GetPViodFromStrKey(root);
// открываем секцию
reg->OpenKey(dur.c_str(), true);
// Если ветка существует, то
if (reg->ValueExists(name))
{
// вот это не работает
int array [5]=  {znachenie} ;
reg->WriteBinaryData(name, array, sizeof(array));
reg->CloseKey();
}
}
Вот заготовка функций которую я хочу сделать
в нее надо передать массив в переменую znachenie из значений например: { 0xff,0x00,0x00,0x00}

Добавлено через 5 минут 46 секунд
Грубо говоря для начала научите меня как в функцию передать массив а дальше я сам попробую если что отпишусь!
0
hockfan
7 / 7 / 0
Регистрация: 08.07.2009
Сообщений: 13
08.07.2009, 11:08 #7
честно говоря не понял почему так делается и о каких стнадартах речь.
Почему нельзя просто воспользоваться динамическим выделением для массива
C++
1
2
3
4
5
6
7
8
int i =1;
 
//а вот это что за чудо я не понял. это не верная запись для с++ хотя смотря что определено для типа byte конечно
byte zn = { 0xff,0x00,0x00,0x00}; 
 
BYTE* array=new BYTE[i];
//в конце только придется конечно вызвать
delete [] array;
1
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 11:27  [ТС] #8
C++
1
2
3
4
5
int i = 2 ;
BYTE zn  = 0xff ;
BYTE zn1  = 0xff ;
BYTE* array=new BYTE[i];
array = {zn,zn1} ;
Пишет : [C++ Warning] Unit1.cpp(196): W8004 'zn1' is assigned a value that is never used

Тоесть : [C++ Предупреждая] Unit1.cpp(196): W8004 'zn1 назначен величина, что никогда не использован

Добавлено через 7 минут 14 секунд
hockfan а как array = {0xff,0x00,0x00,0x00}; вот это осуществить
0
hockfan
7 / 7 / 0
Регистрация: 08.07.2009
Сообщений: 13
08.07.2009, 11:28 #9
//хм может борланд конечно что-то допускает не стандартное но правильнее все таки в с++ запись
C++
1
2
array[0]=zn;
array[1]=zn1;
в данном случае, хотя тоже не идеально.
0
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 11:34  [ТС] #10
Или можно как нибуть динамически присваивать в array [4] цифру за место 4 а то кажный раз я не знаю сколько будет значений может одно а может и сто !!! подставлением в нее переменной i не работает
int i = 4;
array [i] = {0xff,0x00,0x00,0x00};
выдает ошибку
0
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.07.2009, 11:35 #11
а как array = {0xff,0x00,0x00,0x00}; вот это осуществить
В будущем стандарте C++0x так:
std::vector<int> arr = {0xFF, 0x00, 0x00, 0x00}; или
std::array<int,4> arr = {то же самое};

сейчас:
#include <boost/assign.hpp>
using namespace boost::assign;

std::vector<int> arr;
arr += 0xFF, 0x00, 0x00, 0x00;
0
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 13:14  [ТС] #12
Надо в общем в функцию передать строковой параметр "0xff 0x00 0x00 0x00" токова вида
и каждую 0xff 0x00 0x00 0x00 присвоить масиву

C++
1
2
3
4
array[0]=  0xff;
array[1]=  0x00;
array[2]=  0x00;
array[3]=  0x00;
это единственный вариант как сделать не представляю может есть стандартные функций что бы со строками работать например каждые пять символов присвайвать переменной или сразу в массив прчем чтобы переменные создавались автоматически!
0
hockfan
7 / 7 / 0
Регистрация: 08.07.2009
Сообщений: 13
08.07.2009, 14:11 #13
#include <sstream>

stringstream my("0xff 0xf0 0x00 0x00",stringstream::in);
my>>hex>>array[0]>>array[1];
1
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
08.07.2009, 14:44 #14
Для такой задачи нет смысла городить весь этот огород ))
Что тебе мешает передать строку, разобрать ее на переменные, выделить необходимую память под динамический массив и присвоить эти переменные, предварительно сконвертировав их в числа.
1
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 123
08.07.2009, 17:33  [ТС] #15
Цитата Сообщение от Haster Посмотреть сообщение
Для такой задачи нет смысла городить весь этот огород ))
Что тебе мешает передать строку, разобрать ее на переменные, выделить необходимую память под динамический массив и присвоить эти переменные, предварительно сконвертировав их в числа.
Если не сложно можешь помочь а то я просто на делфи работал в основном а мне надо на с++

Добавлено через 10 минут 16 секунд
Цитата Сообщение от hockfan Посмотреть сообщение
#include <sstream>

stringstream my("0xff 0xf0 0x00 0x00",stringstream::in);
my>>hex>>array[0]>>array[1];
Ваш код выдал кучу ошибок типо необьявленые индификаторы stringstream, my,hex и кучу других еще

Добавлено через 56 минут 3 секунды
имеем строку например "0xff 0x00 0x00 0x00" надо ее разобрать переконвертировать в формат int и записать в масив

вида

array[0]= 0xff;
array[1]= 0x00;
array[2]= 0x00;
array[3]= 0x00;
0
08.07.2009, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2009, 17:33
Привет! Вот еще темы с ответами:

Для чего используеться передача структурных переменных в функцию? - C++
Вообщем прошу помощи. 1) Для чего используеться передача структурных переменных в функцию? Как производиться доступ к полям структуры?...

Передача других типов переменных через тип LPVOID - C++
Добрый вечер. В функцию нужно передать переменную типа Awesomium::WebView* А функция принимает тип LPVOID Передаю так: ...

Объясните, пожалуйста, как работает передача переменных при вызове функций? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void z(int *a,int lenght){ int *p; for...

Массив из переменных - C++
Добрый день! Интересует такой вопрос : как правильно сделать массив из переменных(при этом статического размера)? Обязательно ли делать...


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

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

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