HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 04.01.2007, 20:27
Zadoxlik
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме:
3369632

Репутация: 749


По умолчанию

sizeof размер места, занимаемый переменной в памяти. У тебя А имеет тип массива int из 4 элементов. Обычно под разрядностью инт понимается разрядность регистра общего назначения процессора системы. В 32битных компиляторах тип int занимает 32 бита или 4 байта, а у тебя элемента 4. 4*4 = 16. Сошлось!
 

  #22  
Старый 04.01.2007, 22:42
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

хоть я это и сам понял, всё равно пасиба
осталось узнать функцию, считающую кол-во элементов
 

  #23  
Старый 04.01.2007, 23:36
Deem3n®
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
Провел на форуме:
3730496

Репутация: 519
По умолчанию

sizeof(A)/sizeof(int)
 

  #24  
Старый 05.01.2007, 00:59
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
sizeof(A)/sizeof(int)
имхо 1 выведет, так как 4/4(у большинства так) = 1
Но не проверял, не знаю =)

Цитата:
осталось узнать функцию, считающую кол-во элементов
С или C++?
На C - никак.
На C++ - можно, но если массивы типа CArray, vector или подобные. Просто посмотри список их методов.
 

  #25  
Старый 05.01.2007, 01:03
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

int A[10];

Узнать число элементов - sizeof(A)/sizeof(*A).
Отдаст 10

nerezus, неа все далеко не так
 

  #26  
Старый 05.01.2007, 01:16
Zadoxlik
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме:
3369632

Репутация: 749


По умолчанию

Цитата:
имхо 1 выведет, так как 4/4(у большинства так) = 1
=P Nerezus
 

  #27  
Старый 05.01.2007, 01:23
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
nerezus, неа все далеко не так
В качестве подтверждения своих слов напиши-ка ф-ию, определяющую кол-во элементов
 

  #28  
Старый 05.01.2007, 01:28
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

как всегда, мы говорили о разных вещах.

Код:
int func(int a[])
{
     return sizeof(a);
}

int main()
{
     int rrr[10];
     printf("%d\n", func(rrr));
     return 0;
}
Вывод - 4.
Вполне очевидно, потому что
int func(int a[])
нихрена это не массив. В функцию передается указатель на него и это полностью аналогично этому:
int func(int *a)



Код:
	int rrr[10];
	printf("%d\n", sizeof(rrr));
Вывод - 40.
Тоже очевидно. 10 элементов по 4 байта.
 

  #29  
Старый 05.01.2007, 01:38
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
В функцию передается указатель на него
Про что я и говорил.

Любой sizeof(), как ты сказал, определяется на этапе компиляции.
Вывод: sizeof() не подходит.
Т.к. с такой же легкостью мы можем подставить туда числовое значение.

Ну так вот, на сишнике я не вижу способа определить размер массива.
 

  #30  
Старый 05.01.2007, 01:48
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Динамечски - конечно нельзя.
никто и не спорит)
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ