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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.68
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
08.07.2009, 10:21     Передача переменных в массив #1
Надо решить небольшую проблему есть следующий массив

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;
Следующий код почему то не работает пожалуста укажите на мой ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2009, 10:21     Передача переменных в массив
Посмотрите здесь:

Для чего используеться передача структурных переменных в функцию? C++
C++ Передача значений переменных функциями
C++ Передача переменных в поток
C++ Передача локальных переменных одной функции другой
C++ Массив из переменных
Передача переменных C++
Объясните, пожалуйста, как работает передача переменных при вызове функций? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
08.07.2009, 10:34     Передача переменных в массив #2
пожалуста укажите на мой ошибки
ты используешь компилятор, несовместимый со стандартом С99, либо эта возможность не активирована.
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
08.07.2009, 10:34     Передача переменных в массив #3
Во-первых, не существует такого типа byte (если только он не определен при помощи typedef или #define).
Во-вторых (допуская, что byte соответствует типу unsigned char), С++ не позволяет обычной переменной присваивать сразу несколько значений.
И в третьих, использовать переменные массивы позволяют далеко не все компиляторы (для этого они должны поддерживать стандарт С99)
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
08.07.2009, 10:50  [ТС]     Передача переменных в массив #4
использую c++ builder 6
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 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 не делают этого, причём похоже, что две эти компании и не думают их добавлять.
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
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 секунд
Грубо говоря для начала научите меня как в функцию передать массив а дальше я сам попробую если что отпишусь!
hockfan
 Аватар для 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;
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
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}; вот это осуществить
hockfan
 Аватар для hockfan
7 / 7 / 0
Регистрация: 08.07.2009
Сообщений: 13
08.07.2009, 11:28     Передача переменных в массив #9
//хм может борланд конечно что-то допускает не стандартное но правильнее все таки в с++ запись
C++
1
2
array[0]=zn;
array[1]=zn1;
в данном случае, хотя тоже не идеально.
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
08.07.2009, 11:34  [ТС]     Передача переменных в массив #10
Или можно как нибуть динамически присваивать в array [4] цифру за место 4 а то кажный раз я не знаю сколько будет значений может одно а может и сто !!! подставлением в нее переменной i не работает
int i = 4;
array [i] = {0xff,0x00,0x00,0x00};
выдает ошибку
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 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;
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
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;
это единственный вариант как сделать не представляю может есть стандартные функций что бы со строками работать например каждые пять символов присвайвать переменной или сразу в массив прчем чтобы переменные создавались автоматически!
hockfan
 Аватар для 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];
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
08.07.2009, 14:44     Передача переменных в массив #14
Для такой задачи нет смысла городить весь этот огород ))
Что тебе мешает передать строку, разобрать ее на переменные, выделить необходимую память под динамический массив и присвоить эти переменные, предварительно сконвертировав их в числа.
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
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;
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,354
Записей в блоге: 26
08.07.2009, 18:05     Передача переменных в массив #16
Как на Си++ - не знаю. Если строка строкго такая (4 числа, разделённые одним проблеом), то на Си тупой код будет выглядеть так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
  char *s = "0x12 0xab 0x56 0xef";
  char *p = s;
  int a[4];
  int i, r;
 
  for (i = 0; i < 4; i++)
    {
      sscanf (p, "0x%x", &a[i]);
 
      /* перескакиваем на следущее число (т.е. ищем пробел и на следующий символ) */
      p = strchr (p, ' ') + 1;
    }
 
  for (i = 0; i < 4; i++)
    printf ("%x\n", a[i]);
}
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
08.07.2009, 18:14  [ТС]     Передача переменных в массив #17
Цитата Сообщение от Evg Посмотреть сообщение
Как на Си++ - не знаю. Если строка строкго такая (4 числа, разделённые одним проблеом), то на Си тупой код будет выглядеть так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
  char *s = "0x12 0xab 0x56 0xef";
  char *p = s;
  int a[4];
  int i, r;
 
  for (i = 0; i < 4; i++)
    {
      sscanf (p, "0x%x", &a[i]);
 
      /* перескакиваем на следущее число (т.е. ищем пробел и на следующий символ) */
      p = strchr (p, ' ') + 1;
    }
 
  for (i = 0; i < 4; i++)
    printf ("%x\n", a[i]);
}
Да мне бы в с++
hockfan
 Аватар для hockfan
7 / 7 / 0
Регистрация: 08.07.2009
Сообщений: 13
08.07.2009, 18:18     Передача переменных в массив #18
omezik,
он не мог не написать ошибок это просто как справка что есть такое как stringstream

C++
1
2
3
4
#include <sstream>
using namespace std;
stringstream my("0xff 0xf0 0x00 0x00",stringstream::in);
my>>hex>>array[0]>>array[1];
или
C++
1
2
3
4
#include <sstream>
 
std::stringstream my("0xff 0xf0 0x00 0x00",std::stringstream::in);
my>>std::hex>>array[0]>>array[1];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2009, 08:31     Передача переменных в массив
Еще ссылки по теме:

Массив (переписать без глобальных переменных) C++
Передача переменных в функцию C++
C++ Передача переменных из функции в метод класса
C++ Передача других типов переменных через тип LPVOID
Что лучше - массив или совокупность переменных? C++

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

Или воспользуйтесь поиском по форуму:
omezik
2 / 2 / 0
Регистрация: 30.06.2009
Сообщений: 119
09.07.2009, 08:31  [ТС]     Передача переменных в массив #19
блин неужели не кто не поможет скоро мозг взарвется а решение так и не нашел!!!

Добавлено через 12 часов 28 минут 35 секунд
все разобрался кто скажет теперь как мне добавить параметр в реестр тип reg_binary пустой без значения
Yandex
Объявления
09.07.2009, 08:31     Передача переменных в массив
Ответ Создать тему
Опции темы

Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru