Показать сообщение отдельно
Старый 03.10.2012, 02:26   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Створення статичної бібліотеки

узнать размер массива:
sizeof(result) / sizeof(result[0])
но в нашем случае должно быть все по другому.
узнать размер массива по указателю гарантированно никак нельзя (если не пользоваться компиляторозависимыми хаками)

тебе нужно будет его передавать явно.
заголовок функции в либке будет выглядеть как то так:
void __stdcall returnNumbers_(int size_a,int size_b,int *a, int *b, int *result);
напишем хелпер для удобного вызова:
template<int A, int B>
void returnNumbers(int (&a)[A],int (&b)[b],int *result)
{
	returnNumbers_(A,B,a,b,result);
}
реализация будет какаято-такая:
void __stdcall returnNumbers_(int size_a,int size_b,int *a, int *b, int* result)
{												
	int count=0;
	
	
	for(int i=0;i<size_a;i++)
	{
		for(int j=0;j<size_b;++j)
		{
			if(a[i]==b[j])
			{
				count++;
			}
		}
	}
	int index=0;
	for(int i=0;i<size_a;++i)
	{
		for(int j=0;j<size_b;++j)
		{
			if(a[i]==b[j])
			{
				result[index++]=i;					
			}
		}
	}	
	for(int i=count;i<10;i++)
	{
		result[i]=-1;
	}
}
вызывающая сторона не изменится

это все делалось из условия что размер a равен размеру result. если это не так, то нужно аналогичным образом передать размер еще одного массива.

result можно инициализировать так:
int result[sizeof(a) / sizeof(a[0])]={-1};
(Offline)
 
Ответить с цитированием