Ответы:
В С++ массивы - это практически красивая запись указателей. А используются, например в динамических массивах, или при передаче функции строки или ещё чего похуже, или при передаче параметров камандной строки и т.д.
Указатели необходимо использвать когда
а) у вас есть объект, который нельзя или затруднительно копировать.
б) есть объект, который инициализируется в неопределённый заранее момент
в) необходимо создать заранее неизвестное количество объектов
г) требуется использовать полиморфизм
д) функция может менять аргумент
В случаях а), г), д) лучше использовать ссылки, а не указатели
во многих, всех их перечислить достаточно сложно
Вместо указателей лучше использовать ссылки и boost::intrusive_ptr
1. Самый простой пример:
char string[]="some string";
printf(string);
Сдается, вы просто не понимаете что такое указатель. Потому что так же можно спросить: "в каких случаях целесообразно использовать ярлык для файла, а в каких - копию файла?". Очевидно, что спросивший такое - просто не понимает что такое ярлык. Так вот, указатель - это и есть ярлык на некий адрес в памяти. Там может лежать значение переменной, начало массива, объект - что угодно. Как вам ответить - в каких случаях использовать указание адреса на данные или копию этих данных? Это зависит полностью от задачи. То есть, когда вы хорошенько разберетесь что такое указатель, вопрос когда его лучше использовать (и когда нужно) - отпадет сам собой. В С++ также допустимы нетипизированные указатели: вы можете рассматривать данные берущие начало в указатели как захотите (это дает определенную гибкость, но и, разумеется, повышает вероятность ошибок)
Важно не путать указатели и ссылки. А вообще почти всегда лучше использовать умные указатели, например, из boost.
я думаю, тут вопрос скорее стоит переформулировать как "когда лучше использовать статическое выделение памяти, а когда - динамическое?", потому что вопрос про указатели смысла, вообще говоря, не имеет.
так вот, статический буфер целесообразно выделять под данные внутри конкретной функции, когда заранее известна их природа и предполагаемый размер выделяемой области, а так же требуется обеспечить максимальное быстродействие.
16 лет назад