Albor » 05 дек 2007, 17:21
Дополню немного пост от ВВВ. Ссылка - псевдоним какой-либо переменной. Особая ценность ссылки - передача параметров в функцию. Если данные передаются по ссылке, то функция работает с оригиналом переменной, а не с копией. Чем хорошо? Вдруг результатом работы функции должно быть несколько значений, причём разных типов, одно значение можно вернуть оператором return, а остальные - передать по ссылке в качестве параметров. Как и когда применять, то лучше подумать на примерах. Например, написать функцию, обрабатывающую массив данных. Как передать данные в функцию? Если передать по значению, то в функции будет создана копия массива, а если массив очень большой? Но это первая половина беды, а вторая - возврат обработанного массива - опять копирование. Поэтому в функцию лучше передать указатель на начало массива и его размер. Уже не будет потерь времени на копирование. Когда дойдёшь до изучения классов и наследования, то оценишь удобство указателя на базовый класс. Например, класс описывающий транспортное средство будет базовым для класса МОТОЦИКЛ, ЛЕГКОВУШКА, ГРУЗОВИК и т.д. Объявив указатель на ТРАНСПОРТНОЕ СРЕДСТВО, можно присвоить ему значение любого из наследников и обработать в одном цикле, например, и мотоциклы и автобусы и т.д. Вобщем, по мере накопления опыта, всё это станет более очевидным. Главное сейчас не пытаться "схватить" сразу всё - голова может опухнуть. Успехов.
Дополню немного пост от ВВВ. Ссылка - псевдоним какой-либо переменной. Особая ценность ссылки - передача параметров в функцию. Если данные передаются по ссылке, то функция работает с оригиналом переменной, а не с копией. Чем хорошо? Вдруг результатом работы функции должно быть несколько значений, причём разных типов, одно значение можно вернуть оператором return, а остальные - передать по ссылке в качестве параметров. Как и когда применять, то лучше подумать на примерах. Например, написать функцию, обрабатывающую массив данных. Как передать данные в функцию? Если передать по значению, то в функции будет создана копия массива, а если массив очень большой? Но это первая половина беды, а вторая - возврат обработанного массива - опять копирование. Поэтому в функцию лучше передать указатель на начало массива и его размер. Уже не будет потерь времени на копирование. Когда дойдёшь до изучения классов и наследования, то оценишь удобство указателя на базовый класс. Например, класс описывающий транспортное средство будет базовым для класса МОТОЦИКЛ, ЛЕГКОВУШКА, ГРУЗОВИК и т.д. Объявив указатель на ТРАНСПОРТНОЕ СРЕДСТВО, можно присвоить ему значение любого из наследников и обработать в одном цикле, например, и мотоциклы и автобусы и т.д. Вобщем, по мере накопления опыта, всё это станет более очевидным. Главное сейчас не пытаться "схватить" сразу всё - голова может опухнуть. Успехов.