Работа с указателем на массив в функции (Помогите)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
metoflex
Сообщения: 1
Зарегистрирован: 18 апр 2010, 22:36

Я написал программу по сортировке строк из файла, который на жёстком, прога отлично работает, может показаться абсурдом, но я не понял вот в этом куске (функция по обраюотке)-base-содержит в себе все строки файла с жёсткого:

Код: Выделить всё

void strochka(char** base, int e)       //Функция сортировки строк
{
    char* min;
    char* temp;
    int s;
    

    for (int j = 0; j<e; j++)       // Берёт с первой строки по последнюю и  сравнивает её с остальными в массиве
    {
        min = base[j];
        for (int i = j + 1; i<e; i++)  // со второго элемента до конца файла
        {    

            if ((strcmp(min,base[i]))==1)  //Сравнение строк  (Если min>base[i])

            {                
                min = base [i];  //записываем в min, если найдётся строка меньше чем первая (ASCII) 
                s=i;            //индекс минимального элемента
            }
        }

        if ((strcmp(min,base[j]))==-1)   // Если min<base[j], то выполнит
        {
            temp=base[j];                //записываем в temp значение, хранимое в base[j]
            base[j]=base[s];            //записываем в base[j] значение, хранимое в base[s]
            base[s] = temp;            //записываем в base[s] значение, сохранённое в temp
        }

    }

    for (int k=0;k<=(e-1);k++)
    {

        printf ("Элемент %d >> %s",k+1,base[k]);

    }
}
Вот тут :

temp=base[j]; //записываем в temp значение, хранимое в base[j]
base[j]=base[s]; //записываем в base[j] значение, хранимое в base[s]
base[s] = temp; //записываем в base[s] значение, сохранённое в temp


Я работаю с массивом и перезаписываю значения в ячейках массива или в квадратных скобках я указываю с какой областью памяти работать?
Другими словами я работаю с указателем или с массивами?
Если у кого-то есть чёткая информация про указатели и про работу указателя на указатель, пожалуйста напишите ресурс, какая-то каша в голове...(

Спасибо Огромное за помощь! Она так нужна...
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Переменная base имеет тип char**, таким образом выражение base[j] имеет тип char*. Вывод следующий: в выделенном коде ты просто переприсваиваешь указатели на строки.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить