Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать размер динамического массива 
:(
    Опции темы
mrbrooks
Дата 2.4.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



 smile 
хм. ребзя предлагаю объявить конкурс на самые лучшие костыли.
PM MAIL   Вверх
Soah
Дата 2.4.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Dmi3ev, думаю zim22 хотел написать
Код

int size1=sizeof(ar[0])*size;

PM MAIL   Вверх
zim22
Дата 2.4.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Dmi3ev @  2.4.2009,  14:15 Найти цитируемый пост)
zim22, ты в этот раз не прав...

для этого случая непринципиально было, передавать в sizeof тип или название элементов.
но есть большое НО. во всех остальный случаях это принципиально. smile т.к. нет ничего проще забыть изменить тип в sizeof, после того, как тип переменной изменили. Я думаю вы со мной согласитесь.

Добавлено через 1 минуту и 30 секунд
Цитата(Soah @  2.4.2009,  14:20 Найти цитируемый пост)
думаю zim22 хотел написать

телепатией владеете? научите!



--------------------
PM MAIL   Вверх
Soah
Дата 2.4.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Цитата(zim22 @  2.4.2009,  14:25 Найти цитируемый пост)
телепатией владеете? научите!

я что-то неправильно написал?

Цитата(zim22 @  2.4.2009,  13:22 Найти цитируемый пост)

Код

int size1=sizeof(size)*size;

Т.к. если вы вдруг измените тип переменной size, то размер будет считаться неправильно.

Код

int *ar;    
long size=100;
ar=new int[size];       
memset(ar,0,size);    
int size1=sizeof(size)*size;
delete[] ar; 

думаешь так правильно smile 
PM MAIL   Вверх
zim22
Дата 2.4.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Soah @  2.4.2009,  14:20 Найти цитируемый пост)
Dmi3ev, думаю zim22 хотел написать код C++1:int size1=sizeof(ar[0])*size;

думаешь так правильно  smile 


--------------------
PM MAIL   Вверх
Dmi3ev
Дата 2.4.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



zim22, правильнее, чем
Код

int size1=sizeof(size)*size;

это абсолютно то же самое, что взять переменную постороннюю совсем и написать вот так
Код

int a;
int size1=sizeof(a)*size;

те ни в склад, ни в лад, поцелуй дрова в живот получается...

Это сообщение отредактировал(а) Dmi3ev - 2.4.2009, 15:09


--------------------

PM MAIL   Вверх
zim22
Дата 2.4.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Dmi3evhttp://google-styleguide.googlecode.com/sv...uide.xml#sizeof
только открывайте любым браузером, кроме Оперы. иначе половину текста не увидите smile


--------------------
PM MAIL   Вверх
Soah
Дата 2.4.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



zim22, а сколько будет в size1, в твоём варианте, и сколько в варианте Dmi3ev`a
sizeof(int)*size != sizeof(long)*size
Цитата(zim22 @  2.4.2009,  15:05 Найти цитируемый пост)
думаешь так правильно

а что не правильно?
PM MAIL   Вверх
zim22
Дата 2.4.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Soah @  2.4.2009,  15:15 Найти цитируемый пост)
а что не правильно?

акцент необходимо было делать не на конкретном значении, это не принципиально важно,  а на приёме, который используется для минимизации возможных будущих потенциальных ошибок, связанных с передачей в sizeof не переменной, а типа. почитайте ссылку, что я выше дал на Гугл.


--------------------
PM MAIL   Вверх
Soah
Дата 2.4.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Цитата

Use sizeof(varname) instead of sizeof(type) whenever possible. 

а с чего ты взял что varname в данном случае size?

и что не правильно в моём варианте?
PM MAIL   Вверх
zim22
Дата 2.4.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Soah @  2.4.2009,  15:23 Найти цитируемый пост)
 с чего ты взял что varname в данном случае size?и что не правильно в моём варианте?

точно. в sizeof нужно было заключать не size, а &ar[0].  smile 
так что, да, я был не прав. 


--------------------
PM MAIL   Вверх
Dov
Дата 2.4.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(zim22 @  2.4.2009,  15:37 Найти цитируемый пост)
точно. в sizeof нужно было заключать не size, а &ar[0].


не &ar[0], а ar[0], т. е. не указатель на эл-нт, а его значение



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dmi3ev
Дата 2.4.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

не &ar[0], а ar[0], т. е. не указатель на эл-нт, а его значение

 smile 
zim22, я тебе про то же, и Soah...
короче вот так надо:
Код

int size1=sizeof(ar[0])*size;



--------------------

PM MAIL   Вверх
zim22
Дата 2.4.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



всё-равно не правильно.
лучше тип передать, а не значение переменной.
если у нас будет 
Код

long size=0;

то обращение к элементу по индексу 0, которого не существует считает мусор... 


--------------------
PM MAIL   Вверх
Dmi3ev
Дата 2.4.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

то обращение к элементу по индексу 0, которого не существует считает мусор...  

можно условие написать, что если равно 0, то вернуть 0... короче, хватит... бредовое уже обсуждение пошло...


--------------------

PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.