ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

04.01.2007, 20:27
|
|
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме: 3369632
Репутация:
749
|
|
sizeof размер места, занимаемый переменной в памяти. У тебя А имеет тип массива int из 4 элементов. Обычно под разрядностью инт понимается разрядность регистра общего назначения процессора системы. В 32битных компиляторах тип int занимает 32 бита или 4 байта, а у тебя элемента 4. 4*4 = 16. Сошлось!
|
|
|

04.01.2007, 22:42
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
хоть я это и сам понял, всё равно пасиба
осталось узнать функцию, считающую кол-во элементов
|
|
|

04.01.2007, 23:36
|
|
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
Провел на форуме: 3730496
Репутация:
519
|
|
sizeof(A)/sizeof(int)
|
|
|

05.01.2007, 00:59
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
имхо 1 выведет, так как 4/4(у большинства так) = 1 
Но не проверял, не знаю =)
осталось узнать функцию, считающую кол-во элементов
С или C++?
На C - никак.
На C++ - можно, но если массивы типа CArray, vector или подобные. Просто посмотри список их методов.
|
|
|

05.01.2007, 01:03
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
int A[10];
Узнать число элементов - sizeof(A)/sizeof(*A).
Отдаст 10
nerezus, неа  все далеко не так
|
|
|

05.01.2007, 01:16
|
|
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме: 3369632
Репутация:
749
|
|
имхо 1 выведет, так как 4/4(у большинства так) = 1
=P Nerezus
|
|
|

05.01.2007, 01:23
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
nerezus, неа все далеко не так
В качестве подтверждения своих слов напиши-ка ф-ию, определяющую кол-во элементов 
|
|
|

05.01.2007, 01:28
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
как всегда, мы говорили о разных вещах.
Код:
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 байта.
|
|
|

05.01.2007, 01:38
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
В функцию передается указатель на него
Про что я и говорил.
Любой sizeof(), как ты сказал, определяется на этапе компиляции.
Вывод: sizeof() не подходит.
Т.к. с такой же легкостью мы можем подставить туда числовое значение.
Ну так вот, на сишнике я не вижу способа определить размер массива.
|
|
|

05.01.2007, 01:48
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Динамечски - конечно нельзя.
никто и не спорит)
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|