(23.01.2012 19:36)Efrit Wrote: Как это "не услышал"? Сам же и написал функцию, которая принимает на входе указатель
не просто указатель, а массив. да и это тут ни при чем. параметром функции он от этого быть не перестанет. а указатель там или что-то другое - без разницы, суть та же.
(23.01.2012 19:36)Efrit Wrote: Ну и что именно-то тебе в нём не понравилось?
почем я помню? помню, что не понравилось
(23.01.2012 20:07)Efrit Wrote: Вот для такого объявления твой код работать не будет...
надо было явно сказать что для статического. но арифметика указателей от этого не появится. хотя в универсальной функции уже будет не обойтись без работы с указателями:
Code:
void foo(void *p, int n, bool dynamic_array)
{
int tmp;
if(dynamic_array)
{
int **arr = (int**) p;
for(int i = 0; i < n; i++)
{
for(int k = i + 1; k < n; k++)
{
tmp = arr[i][k];
arr[i][k] = arr[k][i];
arr[k][i] = tmp;
}
}
}
else
{
int *arr = (int*) p;
int i1, i2;
for(int i = 0; i < n; i++)
{
for(int k = i + 1; k < n; k++)
{
i1 = i*n+k;
i2 = k*n+i;
tmp = arr[i1];
arr[i1] = arr[i2];
arr[i2] = tmp;
}
}
}
}
(23.01.2012 20:07)Efrit Wrote: И ты ещё говоришь, будто "указателей в моём коде нету" - а сам при этом инициализируешь массив через new
пруф. я такого не говорил. я говорил что выделение и освобождение памяти за работу с указателями не считаю.
(23.01.2012 20:07)Efrit Wrote: Да и вообще, пусть Пакка узнает, что понятие "массив" в С++ - это почти то же самое, что и "указатель"(а вот обратное неверно)
да-да, все массивы - указатели. а вот насчет обратного - я бы сказал, что это зависит от задач. в тех же функциях с произвольным числом параметров указатель, не являвшийся массивом, может им стать.