Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19

Указатель на массив констант. Как передать в функцию?

31.12.2014, 17:38. Показов 5801. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С наступающим!
Нужно передать указатель на stule_a(b) в функцию. А из функций уже выбирать саму строку "stule_a[3]"
Как это сделать?

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
const stule_a[]=
{
    2,                     //   Color
    2,                     //   BorderColor
    1,                 //   BorderWidth
    COLOR_BLACK,        //  TextColor
    ALIGN_CENTER,         //    TextAlignH
    ALIGN_CENTER,        // TextAlignV
    ROTATE_0,               //  TextRotate
    DIR_LEFT_TO_RIGHT,   // TextDirection
    NO,               //    TextFlip
    1                 //    Font Table
};
 
const stule_b[]=
{
    5,                     //   Color
    2,                     //   BorderColor
    2,                 //   BorderWidth
    COLOR_RED,        //    TextColor
    ALIGN_CENTER,         //    TextAlignH
    ALIGN_CENTER,        // TextAlignV
    ROTATE_0,               //  TextRotate
    DIR_LEFT_TO_RIGHT,   // TextDirection
    NO,               //    TextFlip
    3                 //    Font Table
};
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.12.2014, 17:38
Ответы с готовыми решениями:

Как передать в функцию указатель на двумерный массив?
Есть массив int arr, как передать в функцию указатель на него, чтобы при изменения массива в функции он изменялся везде?

Как передать в функцию указатель на двухмерный массив?
Здравствуйте. Как передать в функцию указатель на двухмерный массив? Код компилируется, но дебаггер показал что в функции двухмерный...

Как правильно передать в функцию указатель на двумерный массив?
Сабж #include <windows.h> #include <stdio.h> using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

10
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
01.01.2015, 17:53
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//в H-файле
void myFunc(const int *a, int index);
 
//в CPP-файле
void myFunc(const int *a, int index)
{
    ShowMessage(IntToStr(a[index]));
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    const int *a = stule_a;
    myFunc(a, 8);
}
Но логичнее было бы сделать объявление константного массива видимым для функции.

Кстати, если массивы получили имена от слова "стиль", то исправь на style_a и style_b
1
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19
01.01.2015, 18:03  [ТС]
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//в H-файле
void myFunc(const int *a, int index);
 
//в CPP-файле
void myFunc(const int *a, int index)
{
    ShowMessage(IntToStr(a[index]));
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    const int *a = stule_a;
    myFunc(a, 8);
}
Но логичнее было бы сделать объявление константного массива видимым для функции.

Кстати, если массивы получили имена от слова "стиль", то исправь на style_a и style_b
Спасибо. Я попробую)
Если есть еще варианты организовать такого рода массив, скинь примерчик.
С новым Годом!
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.01.2015, 18:14
Какое предназначение у данных массивов? Задание настроек для чего-то? Если да, то почему просто не использовать структуры + enum?
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19
01.01.2015, 18:19  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Какое предназначение у данных массивов? Задание настроек для чего-то? Если да, то почему просто не использовать структуры + enum?
Задания настроек контролла (Кнопка,Лейбл, Техтбокс...)
Я много вариантов пробовал со структурами но все время выскакивают ошибки...
Если не трудно скинь набросок.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.01.2015, 19:14
Вот, на здоровье. С новым годом, так сказать.
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
52
53
54
55
56
57
enum
{
    OM_HOSTING_FORM, OM_APPLICATION
} ;
 
struct t_ctrl_settings
{
    String name;
    String caption;
    int x, y;
    int owner_mode;
    TNotifyEvent click_handler;
} ;
 
// ---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
 
        public : // User declarations
 
    __fastcall TForm1( TComponent * Owner ) :
        TForm( Owner )
    {
        t_ctrl_settings set =
        { "a_name", "a_caption", 100, 500, OM_APPLICATION, &some_click_handler } ;
 
        some_method( set );
    }
 
    void some_method( const t_ctrl_settings & _set )
    {
        TComponent * owner;
 
        if ( _set.owner_mode == OM_HOSTING_FORM )
        {
            owner = this;
        }
        else if ( _set.owner_mode == OM_APPLICATION )
        {
            owner = Application;
        }
 
        TButton * btn( new TButton( owner ) );
        btn->Parent = this;
        btn->Name = _set.name;
        btn->Caption = _set.caption;
        btn->Left = _set.x;
        btn->Top = _set.y;
        btn->OnClick = _set.click_handler;
    }
 
    void __fastcall some_click_handler( TObject * Sender )
    {
        ShowMessage( "some_click_handler" );
    }
} ;
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19
01.01.2015, 19:30  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Вот, на здоровье. С новым годом, так сказать.
Спасибо! Но по ходу я не объяснил подробно всего...)
Начну сначала.
Пишу GUI для микроконтроллера STM32F4+TFT-LCD. Сабрал эмулятор на C++Builder XE7. И на эмуляторе и на железе все работает. Пишу на Си.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.01.2015, 19:36
На си тоже никто не мешает использовать ни struct ни enum...
Что тогда тема делает здесь в билдере? Подсказка нужна по коду на си для контроллера - я правильно понял?

Не по теме:

И на будущее - чем подробнее напишешь изначально, тем быстрее получишь подходящий совет. Не будет котовасии с уточнениями.

0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19
01.01.2015, 19:42  [ТС]
Так получается struct будет использовать память данных микроконтроллера?

C++
1
2
 t_ctrl_settings set =
        { "a_name", "a_caption", 100, 500, OM_APPLICATION, &some_click_handler } ;
Получается что перед использованием нужно инициализацию делать. А в моем случае нужно извлекать из сектора rom памяти.(
0
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 19
06.01.2015, 18:18  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Что тогда тема делает здесь в билдере? Подсказка нужна по коду на си для контроллера - я правильно понял?
Не важно для чего. Программа пишется в билдере. Суть вопроса не меняется.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
08.01.2015, 17:51
Цитата Сообщение от Simn Посмотреть сообщение
Суть вопроса не меняется.
Уэтого вопроса есть "суть"? Есть показатель Вашей компетентности. Как передать указатель на массив констант? Если массив объявлен как array, то так и вызывайте foo(array). Другое дело что Вы явно не указываете тип Вашего массива, так что мешает? Объявите его явно как любой тип и напишите функцию
C
1
invokeType foo(const dataType const * arrayPtr)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2015, 17:51
Помогаю со студенческими работами здесь

Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
Ребята, скажите пожалуйста, как реализовать такую идею? Необходимо передать в функцию двумерный массив, чтобы она изменала его элементы....

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Возможно ли передать в функцию указатель на массив структур?
Ниже написан работающий код: #include <stdio.h> #include <wchar.h> #include <locale.h> #define SIZE60 60 #define SIZE4 4 ...

Как передать указатель в функцию
Как реализовать передачу HWND в качестве параметра функции? В наборе типов для параметров метода нет типа HWND. Есть тип OLE_HANDLE но он...

Указатель на функцию (как передать?)
void abc(int a, int b) { } void func(void *f(int, int)) { f; }


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru