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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.07.2009, 10:34     Передача переменных в массив #2
пожалуста укажите на мой ошибки
ты используешь компилятор, несовместимый со стандартом С99, либо эта возможность не активирована.
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
2359 / 1054 / 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 не делают этого, причём похоже, что две эти компании и не думают их добавлять.
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
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
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
2359 / 1054 / 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;
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
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
инженер-системотехник
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
Эксперт CАвтор FAQ
17533 / 5771 / 369
Регистрация: 30.03.2009
Сообщений: 15,875
Записей в блоге: 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
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++
Вообщем прошу помощи. 1) Для чего используеться передача структурных переменных в функцию? Как производиться доступ к полям структуры?...

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

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

Массив (переписать без глобальных переменных) - C++
Помогите написать ету програму без глобальных переменных #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; ...

Что лучше - массив или совокупность переменных? - C++
Добрый день. Есть такой код:int array = {0,0,0,0,0}; //... array = someFunc(100500); //... array = anotherFunc();...


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

Или воспользуйтесь поиском по форуму:
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     Передача переменных в массив
Ответ Создать тему
Опции темы

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