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

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

|
Это Код ptr_buffer = &Buffer; как раз и заносит в указатель адрес нулевого элемента массива. Код ptr_buffer = &Buffer; и Код ptr_buffer = &Buffer[0]; одно и тоже
|
|
|
|
|
Jul 8 2011, 09:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(011119xx @ Jul 8 2011, 12:00)  Это Код ptr_buffer = &Buffer; как раз и заносит в указатель адрес нулевого элемента массива. Код ptr_buffer = &Buffer; и Код ptr_buffer = &Buffer[0]; одно и тоже  Хоть меня частенько критикуют за любовь к печатным изданиям, но вам, любезный, книги надобно почитать. Если объявлен массив abc[10], то abc - это указатель на массив и его значение в точности равно адресу первого элемента, т.е. &abc[0]. А &abc - дает адрес указателя на массив, что, согласитесь, совсем не то, что вы хотите получить и использовать. на что вам и указал уважаемый zltigo.
|
|
|
|
|
Jul 8 2011, 12:01
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(sergeeff @ Jul 8 2011, 13:11)  Хоть меня частенько критикуют за любовь к печатным изданиям, но вам, любезный, книги надобно почитать. Если объявлен массив abc[10], то
abc - это указатель на массив и его значение в точности равно адресу первого элемента, т.е. &abc[0]. А &abc - дает адрес указателя на массив, что, согласитесь, совсем не то, что вы хотите получить и использовать. Вам бы самому хоть немного почитать. abc -- это указатель-константа которая равна адресу первого элемента массива с нулевым индексом, у константы не может быть адреса.
|
|
|
|
|
Jul 8 2011, 15:13
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(sasamy @ Jul 8 2011, 15:01)  abc -- это указатель-константа которая равна адресу первого элемента массива с нулевым индексом, у константы не может быть адреса. "Ой". Утверждение "&abc это адрес указателя" неправильно, но и Вы что-то странное написали. С «у константы не может быть адреса» можно согласиться, если определиться, что под словом «константа» имеется ввиду литерал. const int ci = 5; // тоже ведь константа abc -- это идентификатор массива, который в выражениях в большинстве случаев автоматически приводится к указателю на его первый элемент, т.е. к величине (включая как тип, так и значение), тождественной &abc[0]. Но не во всех. sizeof(abc) даст размер массива в байтах, тогда как sizeof(&abc[0]) даст длину указателя. &abc даст адрес массива, что и было продемонстрировано в приведенной выдаче компилятора. («кстати о птичках»™, в С нет многомерных массивов, есть одномерные массивы, включая массивы других одномерных массивов).Численно он равен адресу первого элемента, но по типу отличается. Указатель на первый элемент даёт обращение к одному элменту, указатель на массив даёт обращение к массиву. sizeof(* &abc) также даст размер массива в байтах. Переменная ptr_abc_0, имеющая тот же тип, что и &abc[0], при инкременте будет увеличиваться на размер (с учётом выравнивания) элемента массива. Переменная ptr_abc, имеющая тот же тип, что и &abc, будет увеличиваться на длину массива. Цитата(GetSmart @ Jul 8 2011, 17:46)  Вы как истеричка  Вся соль в посте №72. Он почти неурезанный. И на этом я закончу. Хм... А нужную-то цитату Вы и в своём сообщении привели. Цитата(GetSmart @ Jul 8 2011, 16:42)  Себя почитайте
"это" бессмысленное выражение которое любой вменяемый компилятор обязан послать нафиг. Вы заявили, что амперсанд применительно к массиву без индекса является бессмысленной операцией. Речь-то идёт не о применении & к имени массива, а о выражении, присвавающем результат переменной другого типа. Цитата(zltigo @ Jul 8 2011, 12:08)  Код ptr_buffer = &Buffer; Разумеется нет. "это" бессмысленное выражение которое любой вменяемый компилятор обязан послать нафиг. Это Код double d; float *pf = &d; тоже «всего лишь слегка не совпадает по типу», не так ли? Но любой вменяемый компилятор тоже обязан послать нафиг.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jul 8 2011, 18:25
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(GetSmart @ Jul 8 2011, 11:32)  Я к тому и вёл, что ТС взял адрес массива вместо адреса нулевого элемента массива. Причём адреса оба равны. Только типом отличаются и только компилятор руганётся на это. Самое смешное, что для того чтобы в этом убедиться, не обязательно даже читать книжку. Достаточно потратить 5 минут на то, чтобы скомпилировать это выражение. g++ выдает вполне развернутое сообщение об ошибке, из которого ясно, что проблема в неправильном типе. Но гуру экспериментировать западло, это же значит надо в собственных непоколебимых знаниях усомниться. Цитата(zltigo @ Jul 8 2011, 14:21)  Мне уже точно надоело  . Похоже Вы читать не умеете  . Именно о ТИПЕ - "Что указатель на int не является кирпичом" я, подчеркиваю я, а не вертящийся на сковородке GetSmart речь все время и вел и веду. Не приписываете мне то чего я не говорил. Выражение присваивающее указателю на int указатель на массив БЕССМЫСЛЕННО из-за разных типов. Бессмысленно? Это на С, которому грубо говоря начихать на типы? Ну-ну. GetSmart все правильно написал, на сковордке это вы вертитесь, впадая в истерику от УЖАСНЫХ УЖАСНЫХ УЖАСНЫХ ошибок
|
|
|
|
|
Jul 8 2011, 18:32
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ar__systems @ Jul 8 2011, 21:25)  Это на С, которому грубо говоря начихать на типы? Хорошо быть страусом и игнорировать очевидные вещи, типа наличия выделенной памяти под указатель и приведенные мной вопли сишного компилятора, которому таки не начихать на типы. Считайте, что в своей глупости Вы меня уже убедили. Достаточно, можете не продолжать.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
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 011119xx Не много поправлюсь:
Кодuint16_t Buffer[50... Jul 8 2011, 08:06 zltigo QUOTE (011119xx @ Jul 8 2011, 11:06) Не м... Jul 8 2011, 08:27 AHTOXA Цитата(011119xx @ Jul 8 2011, 14:06) Это ... Jul 8 2011, 08:45  011119xx Цитата(AHTOXA @ Jul 8 2011, 14:45) Есть е... Jul 8 2011, 09:44   AHTOXA Цитата(011119xx @ Jul 8 2011, 15:44) В да... Jul 8 2011, 10:41    sergeeff Цитата(AHTOXA @ Jul 8 2011, 14:41) Если н... Jul 8 2011, 10:47     AHTOXA Цитата(sergeeff @ Jul 8 2011, 16:47) Ну н... Jul 8 2011, 10:55      sergeeff Цитата(AHTOXA @ Jul 8 2011, 13:55) Вы о ч... Jul 8 2011, 11:04       AHTOXA Цитата(sergeeff @ Jul 8 2011, 17:04) Уваж... Jul 8 2011, 11:28        sergeeff Цитата(AHTOXA @ Jul 8 2011, 14:28) А вы п... Jul 8 2011, 11:47         AHTOXA Цитата(sergeeff @ Jul 8 2011, 17:47) Это ... Jul 8 2011, 12:35          sergeeff Цитата(AHTOXA @ Jul 8 2011, 16:35) Кодint... Jul 8 2011, 16:02           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 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  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 Цитата(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
|
|
|