ВУЗ:
Составители:
Рубрика:
17
int* ptr;
int size;
};
void compute2(vec v);
С многомерными массивами все сложнее, но часто можно вместо них
использовать векторы указателей, которые не требуют специального рас-
смотрения. Например:
char* day[] = {"mon", "tue", "wed", "thu", "fri", "sat",
"sun"
};
Если размерность известна на стадии компиляции, то никаких проблем
нет:
void print_m34(int m[3][4])
{
for (int i = 0; i<3; i++) { for (int j="0;" j<4; j++)
cout << " " << m[i][j]; cout << "\n"; } }
Матрица, конечно, все равно передается как указатель, а размерности
используются просто для удобства записи. Первая размерность массива не
имеет отношения к задаче отыскания положения элемента. Поэтому ее мож-
но передавать как параметр.
Как правило, давать разным функциям разные имена – мысль хорошая,
но когда некоторые функции выполняют одинаковую работу над объектами
разных типов, может быть более удобно дать им одно и то же имя. Использо-
вание одного имени для различных действий над различными типами назы-
вается перегрузкой (overloading). Метод уже используется для основных опе-
раций
C++: у сложения существует только одно имя: +, но его можно приме-
нять для сложения значений целых, плавающих и указательных типов. Эта
идея легко расширяется на обработку операций, определенных пользовате-
лем, то есть, функций. Во избежание случайного повторного использования
имени, имя может использоваться более, чем для одной функции только если
оно сперва
описано как перегруженное. Например:
overload print;
void print(int);
void print(char*);
Для некоторых функций невозможно задать число и тип всех парамет-
ров, которые можно ожидать в вызове. Такую функцию описывают, завершая
список описаний параметров многоточием (...), что означает «и может быть,
еще какие-то параметры». Например:
int printf(char* ...);
Это задает, что в вызове printf должен быть, по меньшей мере, один па-
раметр, char*, а остальные могут быть, а могут и не быть.
Такая функция полагается на информацию, которая недоступна ком-
пилятору при интерпретации ее списка параметров. В случае printf() первым
параметром является строка формата, содержащая специальные последова-
тельности символов, позволяющие printf() правильно обрабатывать
осталь-
int* ptr; int size; }; void compute2(vec v); С многомерными массивами все сложнее, но часто можно вместо них использовать векторы указателей, которые не требуют специального рас- смотрения. Например: char* day[] = {"mon", "tue", "wed", "thu", "fri", "sat", "sun" }; Если размерность известна на стадии компиляции, то никаких проблем нет: void print_m34(int m[3][4]) { for (int i = 0; i<3; i++) { for (int j="0;" j<4; j++) cout << " " << m[i][j]; cout << "\n"; } } Матрица, конечно, все равно передается как указатель, а размерности используются просто для удобства записи. Первая размерность массива не имеет отношения к задаче отыскания положения элемента. Поэтому ее мож- но передавать как параметр. Как правило, давать разным функциям разные имена – мысль хорошая, но когда некоторые функции выполняют одинаковую работу над объектами разных типов, может быть более удобно дать им одно и то же имя. Использо- вание одного имени для различных действий над различными типами назы- вается перегрузкой (overloading). Метод уже используется для основных опе- раций C++: у сложения существует только одно имя: +, но его можно приме- нять для сложения значений целых, плавающих и указательных типов. Эта идея легко расширяется на обработку операций, определенных пользовате- лем, то есть, функций. Во избежание случайного повторного использования имени, имя может использоваться более, чем для одной функции только если оно сперва описано как перегруженное. Например: overload print; void print(int); void print(char*); Для некоторых функций невозможно задать число и тип всех парамет- ров, которые можно ожидать в вызове. Такую функцию описывают, завершая список описаний параметров многоточием (...), что означает «и может быть, еще какие-то параметры». Например: int printf(char* ...); Это задает, что в вызове printf должен быть, по меньшей мере, один па- раметр, char*, а остальные могут быть, а могут и не быть. Такая функция полагается на информацию, которая недоступна ком- пилятору при интерпретации ее списка параметров. В случае printf() первым параметром является строка формата, содержащая специальные последова- тельности символов, позволяющие printf() правильно обрабатывать осталь- 17
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »