|
Как в си объявить массив с возможностью изменения его размера? |
|
|
|
 |
Ответов
|
Jul 8 2011, 08:06
|

Местный
  
Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544

|
Не много поправлюсь: Код uint16_t Buffer[50]; uint16_t *ptr_buffer; uint16_t index_buffer; uint16_t value;
void main(void) { ptr_buffer = &Buffer; index_buffer = 32; Buffer[index_buffer] = 0х0010; value = *(ptr_buffer + index_buffer); } Это работает. Но это вариант с явным указанием размера буфера при объявлении. Я так понял иначе и нельзя.
|
|
|
|
|
Jul 8 2011, 08:45
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(011119xx @ Jul 8 2011, 14:06)  Это работает. Но это вариант с явным указанием размера буфера при объявлении. Я так понял иначе и нельзя. Есть ещё вариант. Стандарт C99 поддерживает автоматические переменные-массивы переменной длины: Код int mean_of_N_samples(int N) { int arr[N]; for (int i = 0; i < N; i++) { arr[i] = get_sample(); } return mean(arr, N); } Массив (обычно) создаётся на стеке. То есть, если вам ваш массив переменной длины нужен временно, то это отличный вариант.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jul 8 2011, 09:44
|

Местный
  
Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544

|
Цитата(AHTOXA @ Jul 8 2011, 14:45)  Есть ещё вариант. Стандарт C99 поддерживает автоматические переменные-массивы переменной длины: Код int mean_of_N_samples(int N) { int arr[N]; for (int i = 0; i < N; i++) { arr[i] = get_sample(); } return mean(arr, N); } Массив (обычно) создаётся на стеке. То есть, если вам ваш массив переменной длины нужен временно, то это отличный вариант. В данном случае массив объявляется внутри функции. Мне нужно чтобы массив был глобальным, он потом используется в другой функции.
|
|
|
|
|
Jul 8 2011, 11:28
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(sergeeff @ Jul 8 2011, 17:04)  Уважаемый. Вы понимаете про что говорите? Статический массив автору был нужен для копирования тела символа. Где гарантия, что в другом шрифте, символы "влезут" в этот массив? А вы попробуйте для интереса иногда читать то, на что возражаете. Выделяем массив размера как максимальный символ. И всё. Размер этот известен на этапе компиляции. Цитата(sergeeff @ Jul 8 2011, 17:04)  Странное это программирование, основанное на предположениях и утверждениях "и так катит". Это вы уже сами что-то себе выдумали, и доблестно с этим воюете. Грубите, кстати.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jul 8 2011, 11:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(AHTOXA @ Jul 8 2011, 14:28)  А вы попробуйте для интереса иногда читать то, на что возражаете. Выделяем массив размера как максимальный символ. И всё. Размер этот известен на этапе компиляции.Это вы уже сами что-то себе выдумали, и доблестно с этим воюете. Грубите, кстати. Это вы придумали такой вариант реализации системы, где шрифты подключаются на этапе сборки проекта. Откуда мне и вам знать, может они на SD карточке лежат? А в чем грубость то? Объясните старику. Да, и не плохо бы примерчик, где линкер ругается на размер массива, в который вы собираетесь что то копировать.
|
|
|
|
|
Jul 8 2011, 12:35
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(sergeeff @ Jul 8 2011, 17:47)  Это вы придумали такой вариант реализации системы, где шрифты подключаются на этапе сборки проекта. Откуда мне и вам знать, может они на SD карточке лежат? Наконец-то вы поняли, о чём я писал. А если шрифты лежат на карточке, то да, надо будет проверять размер. Но сама идея от этого не изменится. Цитата(sergeeff @ Jul 8 2011, 17:47)  А в чем грубость то? Объясните старику. Фу-ты ну-ты. Я что, должен вас пожалеть? Давайте, раз вы старик, вы будете читать мои сообщения два раза, прежде чем отвечать на них, хорошо? И свои перед отправкой - тоже читайте. Потому что иначе получаются наезды не по существу. Цитата(sergeeff @ Jul 8 2011, 17:47)  Да, и не плохо бы примерчик, где линкер ругается на размер массива, в который вы собираетесь,что то копировать. Код int array[100500]; (предвидя придирки - на mega8)
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jul 8 2011, 16:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(AHTOXA @ Jul 8 2011, 16:35)  Код int array[100500]; (предвидя придирки - на mega8) Перечитал 3 (три) раза. Круто. А магическую циферку 100500 надо, естественно, ручками вычислить, перед включением нового фонта? Если забыл это сделать, или описался (нолик пропустил, по случаю жаркой погоды)? Никто, ни компилятор, ни линкер, даже не колыхнутся, вам об этом любезно сообщить. И будете долго думать, чего это программа грохается. Мораль - никакая это не диагностика. Тем более не диагностика этапа компиляции. Нужно использовать, например, механизм static_assert, но это только под С++. P.S. Это не придирки.
|
|
|
|
Сообщений в этой теме
011119xx Как в си объявить массив с возможностью изменения его размера? Jul 7 2011, 03:36 V_G За Кейл не скажу, а в Винде делал указатель на ука... Jul 7 2011, 04:17 ukpyr без выделения памяти - никак, объявите массив макс... Jul 7 2011, 04:44 vvs157 Цитата(ukpyr @ Jul 7 2011, 08:44) без выд... Jul 8 2011, 09:47 XVR В C99 можно задать размер массива в момент его опи... Jul 7 2011, 05:55 GetSmart Цитата(011119xx @ Jul 7 2011, 08:36) А по... Jul 7 2011, 07:00 011119xx Цитата(GetSmart @ Jul 7 2011, 13:00) Поэт... Jul 8 2011, 07:27  zltigo QUOTE (011119xx @ Jul 8 2011, 10:27) В да... Jul 8 2011, 07:53   jorikdima Цитата(zltigo @ Jul 8 2011, 11:53) Абсолю... Jul 8 2011, 08:01    GetSmart Цитата(jorikdima @ Jul 8 2011, 13:01) Под... Jul 8 2011, 08:14     zltigo QUOTE (GetSmart @ Jul 8 2011, 11:14) Если... Jul 8 2011, 08:43   XVR Цитата(zltigo @ Jul 8 2011, 11:53) Абсолю... Jul 8 2011, 08:05 011119xx Не могли бы привести код в качестве примера? Jul 7 2011, 08:27 skripach ЦитатаКак в си объявить массив с возможностью изме... Jul 7 2011, 13:49 GetSmart Цитата(011119xx @ Jul 7 2011, 08:36) Необ... Jul 8 2011, 08:01 zltigo QUOTE (011119xx @ Jul 8 2011, 11:06) Не м... Jul 8 2011, 08:27           AHTOXA Цитата(sergeeff @ Jul 8 2011, 22:02) P.S.... Jul 8 2011, 17:31 011119xx Не ожидал господа от вас таких ответов. Извините, ... Jul 8 2011, 08:29 zltigo QUOTE (011119xx @ Jul 8 2011, 11:29) Може... Jul 8 2011, 08:55  GetSmart Цитата(zltigo @ Jul 8 2011, 13:55) ...
Иб... Jul 8 2011, 09:05   zltigo QUOTE (GetSmart @ Jul 8 2011, 12:05) А по... Jul 8 2011, 09:11    ar__systems Цитата(zltigo @ Jul 8 2011, 05:11) Что пр... Jul 8 2011, 18:02 sergeeff Может автор ветки откроет великую тайну, зачем ему... Jul 8 2011, 08:30 011119xx Например в шрифте символы имеют разную ширину при ... Jul 8 2011, 08:49 sergeeff Цитата(011119xx @ Jul 8 2011, 11:49) Напр... Jul 8 2011, 08:53 GetSmart Цитата(011119xx @ Jul 8 2011, 13:49) Напр... Jul 8 2011, 08:55  sergeeff Цитата(GetSmart @ Jul 8 2011, 11:55) Для ... Jul 8 2011, 09:00   011119xx Цитата(sergeeff @ Jul 8 2011, 15:00) Вы, ... Jul 8 2011, 09:09    AHTOXA Цитата(011119xx @ Jul 8 2011, 15:08) Дело... Jul 8 2011, 09:11     011119xx Цитата(AHTOXA @ Jul 8 2011, 15:11) Вы слу... Jul 8 2011, 09:20    GetSmart Цитата(011119xx @ Jul 8 2011, 14:09) Дело... Jul 8 2011, 09:18     sergeeff Цитата(GetSmart @ Jul 8 2011, 12:13) Так ... Jul 8 2011, 09:19     011119xx Цитата(GetSmart @ Jul 8 2011, 15:18) Так ... Jul 8 2011, 09:35      GetSmart Цитата(011119xx @ Jul 8 2011, 14:35) Прич... Jul 8 2011, 09:42       sergeeff Цитата(GetSmart @ Jul 8 2011, 13:42) В ст... Jul 8 2011, 09:49        GetSmart Цитата(sergeeff @ Jul 8 2011, 14:49) А по... Jul 8 2011, 09:55        andron86 Цитата(sergeeff @ Jul 8 2011, 11:49) Указ... Jul 8 2011, 10:48         sergeeff Цитата(andron86 @ Jul 8 2011, 13:48) По м... Jul 8 2011, 10:55          andron86 Цитата(sergeeff @ Jul 8 2011, 12:55) Вы э... Jul 8 2011, 10:57 011119xx Это
Кодptr_buffer = &Buffer;
как раз и заносит... Jul 8 2011, 09:00 zltigo QUOTE (011119xx @ Jul 8 2011, 12:00) Это
... Jul 8 2011, 09:08  GetSmart Ничё не сделал, только вошёл И сразу мошенник.
С... Jul 8 2011, 13:42   zltigo QUOTE (GetSmart @ Jul 8 2011, 16:42) Себя... Jul 8 2011, 14:28    GetSmart Цитата(zltigo @ Jul 8 2011, 19:28) Если э... Jul 8 2011, 14:46 sergeeff Цитата(011119xx @ Jul 8 2011, 12:00) Это
... Jul 8 2011, 09:11  GetSmart Цитата(sergeeff @ Jul 8 2011, 14:11) А ... Jul 8 2011, 09:30   sergeeff Цитата(GetSmart @ Jul 8 2011, 13:30) Прав... Jul 8 2011, 09:37    GetSmart Цитата(sergeeff @ Jul 8 2011, 14:37) Что ... Jul 8 2011, 09:45     vvs157 Цитата(GetSmart @ Jul 8 2011, 13:45) Чему... Jul 8 2011, 10:02      GetSmart Цитата(vvs157 @ Jul 8 2011, 15:02) .. в с... Jul 8 2011, 10:15       vvs157 Цитата(GetSmart @ Jul 8 2011, 14:15) Пото... Jul 8 2011, 10:21       vvs157 Цитата(GetSmart @ Jul 8 2011, 14:15) Одна... Jul 8 2011, 10:24        sergeeff Цитата(vvs157 @ Jul 8 2011, 14:24) Это оч... Jul 8 2011, 10:32         zltigo QUOTE (sergeeff @ Jul 8 2011, 13:32) вмес... Jul 8 2011, 10:44       zltigo QUOTE (GetSmart @ Jul 8 2011, 13:15) Одна... Jul 8 2011, 10:40        GetSmart Цитата(zltigo @ Jul 8 2011, 15:34) Хвала ... Jul 8 2011, 10:41         zltigo QUOTE (GetSmart @ Jul 8 2011, 13:41) Но в... Jul 8 2011, 10:48          GetSmart Цитата(zltigo @ Jul 8 2011, 15:48) Кто зд... Jul 8 2011, 10:52          GetSmart Цитата(zltigo @ Jul 8 2011, 15:48) Это не... Jul 8 2011, 10:56           zltigo QUOTE (GetSmart @ Jul 8 2011, 13:56) zlti... Jul 8 2011, 13:31      ar__systems Цитата(vvs157 @ Jul 8 2011, 06:02) Вообще... Jul 8 2011, 18:11     zltigo QUOTE (GetSmart @ Jul 8 2011, 12:45) void... Jul 8 2011, 10:23      GetSmart Цитата(zltigo @ Jul 8 2011, 15:23) Замени... Jul 8 2011, 10:28  sasamy Цитата(sergeeff @ Jul 8 2011, 13:11) Хоть... Jul 8 2011, 12:01   ReAl Цитата(sasamy @ Jul 8 2011, 15:01) abc --... Jul 8 2011, 15:13    GetSmart Цитата(ReAl @ Jul 8 2011, 20:13) Речь-то ... Jul 8 2011, 15:32     ar__systems Цитата(GetSmart @ Jul 8 2011, 11:32) Я к ... Jul 8 2011, 18:25      zltigo QUOTE (ar__systems @ Jul 8 2011, 21:25) Э... Jul 8 2011, 18:32    sasamy Цитата(ReAl @ Jul 8 2011, 19:13) "Ой... Jul 8 2011, 15:41     zltigo QUOTE (sasamy @ Jul 8 2011, 18:41) ууу...... Jul 8 2011, 16:41      sasamy Цитата(zltigo @ Jul 8 2011, 20:41) А если... Jul 8 2011, 17:13       zltigo QUOTE (sasamy @ Jul 8 2011, 20:13) кроме ... Jul 8 2011, 18:06        ar__systems Цитата(zltigo @ Jul 8 2011, 14:06) Ну в э... Jul 8 2011, 18:15        AHTOXA Цитата(zltigo @ Jul 9 2011, 00:06) Код 5... Jul 8 2011, 18:49     ViKo Цитата(sasamy @ Jul 8 2011, 18:41) Хотя н... Jul 8 2011, 17:43      sasamy Цитата(ViKo @ Jul 8 2011, 21:43) Имя масс... Jul 8 2011, 18:06       ViKo Цитата(sasamy @ Jul 8 2011, 21:06) А вы в... Jul 8 2011, 18:28        ar__systems Я понял, откуда растет это волна негодования. Если... Jul 8 2011, 18:38         Danis Цитата(ar__systems @ Jul 8 2011, 22:38) Д... Jul 8 2011, 18:49         sonycman Цитата(ar__systems @ Jul 8 2011, 22:38) Д... Jul 8 2011, 18:52         zltigo QUOTE (ar__systems @ Jul 8 2011, 21:38) В... Jul 8 2011, 18:57          AHTOXA Цитата(zltigo @ Jul 9 2011, 00:57) Какая ... Jul 8 2011, 19:03      Danis Цитата(ViKo @ Jul 8 2011, 20:43) Имя масс... Jul 8 2011, 18:11 skripach ЦитатаА по поводу &abc можете почитать у отцов... Jul 8 2011, 10:08 skripach sasamy, поддержу. Jul 8 2011, 12:22 ViKo http://chitay.org/c/04/0409.htm
upd. и еще оттуда
... Jul 8 2011, 13:12 Danis Цитата(011119xx @ Jul 7 2011, 06:36) Необ... Jul 8 2011, 18:02 011119xx Keil не ругается на выражение
Кодptr_buffer = ... Jul 8 2011, 18:06 zltigo QUOTE (ar__systems @ Jul 8 2011, 21:02) С... Jul 8 2011, 18:21
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|