powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с определением к-во элементов в массиве.
12 сообщений из 12, страница 1 из 1
Проблема с определением к-во элементов в массиве.
    #34065027
Cheguevara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема с определением к-во элементов в массиве. Конкретно ф-я имеет прототип Sym(char symbols[]), в качестве входного параметра массив неопределенной длины из char элементов, не могу в процессе работы определить размер данного массива, sizeof(symbols) не помогает.
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065070
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не поможет....
вариантов два:
1) передавай в функцию адрес массива и его длину.
2) последний элемент массива должен быть уникальной константой, для char например чаще всего используется нолик.
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065327
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlИ не поможет....
вариантов два:
1) передавай в функцию адрес массива и его длину.
2) последний элемент массива должен быть уникальной константой, для char например чаще всего используется нолик.
Позволю себе предложить третий вариант:
Код: plaintext
sizeof(symbols[])/sizeof(symbols[ 0 ])
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065330
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AsPiroПозволю себе предложить третий вариант:
Код: plaintext
sizeof(symbols[])/sizeof(symbols[ 0 ])

Похоже зря я себе это позволил:)
Это сработает для статического массива, а для массива неопределённой длины -нет:(
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065377
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl WO> 2) последний элемент массива должен быть уникальной
WO> константой, для char например чаще всего используется
WO> ноликЯ бы все же в первых элементах массива хранил их количество :)
а то бегать до конца массива как-то долго получается
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065577
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас White Owl WO> 2) последний элемент массива должен быть уникальной
WO> константой, для char например чаще всего используется
WO> ноликЯ бы все же в первых элементах массива хранил их количество :)
а то бегать до конца массива как-то долго получается

Аля дельфя? :)
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065594
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дабы выбрать правельное решение:

Для общего случая - передача длины массива отдельным параметром.
Для специализированных случаев (строки, например), можно выбрать любой другой вариант (взависимости от набора возможных элементов и способа их обработки), а можно и воспользоваться общим случаем. :)
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065602
LeonM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065656
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonM _msize


Похоже, что это только VCшная фича.
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34065683
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
void Fun(int x[])
{
 char Buf[ 100 ];
 sprintf(Buf, "%d", _msize(x));
 MessageBox(NULL, Buf, "", MB_OK);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 static int a[ 10 ];
 int b[ 10 ];
 int *c, *d;
 c = (int *) new int[ 10 ];
 d = (int *)malloc( 10 *sizeof(int));
 Fun(a);
 Fun(b);
 Fun(c);
 Fun(d);
}

Ответ:
9586424
1244872
44
44

Осталось понять в функции, каким способом, вне функции выделялась память
Проверял на C++Builder 5
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34066929
Zoroaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
main(int argc, char* argv[]) и как после этого можно спраивать как узнать размер массива =)
...
Рейтинг: 0 / 0
Проблема с определением к-во элементов в массиве.
    #34067246
Zoroaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#define INTERNAL_SIZE_T size_t

struct _chunk { 
	 struct				_chunk * fd; 
     struct				_chunk * bk;
	 unsigned long		xz1;
     INTERNAL_SIZE_T	prev_size; 
     INTERNAL_SIZE_T	size;
	 unsigned long		xz2;
	 unsigned long		xz3;	
     unsigned long		magic_start; 
 };
size_t get_size_new(void *l){
	try{
		_chunk		*p;
		p=(_chunk*)(((char*)l)-sizeof(_chunk));
		return p->size;
	}catch(...){
		return  0 ;
	}
}

void Test(void *lp){
	printf("Size:%d\n",get_size_new(lp));
}

int _tmain(int argc, _TCHAR* argv[])
{
	
	char *a = new char[ 65 ];
	char *b = new char[ 10000 ];
	char *c = new char[ 122 ];

	Test(a);
	Test(b);
	Test(c);

	return  0 ;
}
=) Работает только в дебаг версии... не ужто для релиса в heap не зранятся размеры?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с определением к-во элементов в массиве.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]