Как видите, параметр, используемый функцией
Помните, что, если массив используется в качестве аргумента функции, то функции передается адрес этого массива. Это означает, что код функции может потенциально изменить реальное содержимое массива, используемого при вызове функции. Например, в следующей программе функция
#include
using namespace std;
void cube(int *n, int num);
int main()
{
int i, nums[10];
for(i=0; i<10; i++) nums[i] = i+1;
cout << "Исходное содержимое массива: ";
for(i=0; i<10; i++) cout << nums[i] << ' ';
cout << '\n';
cube(nums, 10); // Вычисляем кубы значений.
cout << "Измененное содержимое: ";
for(i=0; i<10; i++) cout << nums[i] << ' ';
return 0;
}
void cube(int *n, int num)
{
while(num) {
*n = *n * *n * *n;
num--;
n++;
}
}
Результаты выполнения этой программы таковы.
Исходное содержимое массива: 12345678910
Измененное содержимое: 1 8 27 64 125 216 343 512 729 1000
Как видите, после обращения к функции
Как вы уже знаете, строки в C++ — это обычные символьные массивы, которые завершаются нулевым символом. Таким образом, при передаче функции строки реально передается только указатель (типа char*) на начало этой строки. Рассмотрим, например, следующую программу. В ней определяется функция
// Передача функции строки.
#include
#include
#include
using namespace std;
void stringupper(char *str);
int main()
{
char str[80];
strcpy(str, "Мне нравится C++");
stringupper(str);
cout << str; // Отображаем строку с использованием прописного написания символов.
return 0;
}
void stringupper(char *str)
{
while(*str) {
*str = toupper(*str); // Получаем прописной эквивалент одного символа.
str++; // Переходим к следующему символу.
}
}
Результаты выполнения этой программы таковы.
МНЕ НРАВИТСЯ C++
Обратите внимание на то, что параметр
// Одна из версий функции strlen().
#include
using namespace std;
int mystrlen(char *str);
int main()
{
cout << "Длина строки ПРИВЕТ ВСЕМ равна: ";
cout << mystrlen("ПРИВЕТ ВСЕМ");
return 0;
}
// Нестандартная реализация функции strlen().
int mystrlen(char *str)
{
int i;
for(i=0; str[i]; i++); // Находим конец строки.
return i;
}
Вот как выглядят результаты выполнения этой программы.
Длина строки ПРИВЕТ ВСЕМ равна: 11
В качестве упражнения вам стоило бы попытаться самостоятельно реализовать другие строковые функции, например