C-строки — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
Строка 23: Строка 23:
 
     // работа с очередным символом строки: *s
 
     // работа с очередным символом строки: *s
 
}</source>
 
}</source>
=== Работа с массивами через указатели ===
 
<source lang="cpp">void write_array(int *a, int sz) {
 
    for(int *p = a; p != a + sz; ++p) {
 
        cout << *p << " ";  // p последовательно указывает на все элементы массива
 
    }
 
    cout << endl;
 
}
 
  
void read_array(int *a, int sz) {
+
[[Категория:C++]]
    for(int *p = a; p != a + sz; ++p) {
 
        cin >> *p;
 
    }
 
}</source>
 

Версия 20:14, 27 октября 2012

C-строки

// Вычисление длины строки
int string_length(char * s) {
    int len = 0;

    // Цикл закончится при достижении нулевого байта, обозначающего конец строки
    for ( ; *s != 0; ++s)
        ++len;
    
    return len;
}

// Каждая латинская буква, кроме 'z', меняется на следующую в алфавите
void shift_string(char * s)  {
    for ( ; *s; ++s) {             // Ненулевое значение кода символа преобразуется к True
                                   // Этот заголовок цикла работает также, как в string_length
        if ('a' <= *s && *s < 'z')
            ++(*s);                // Увеличение кода символа на единицу
    }
}

Третий, самый краткий и широко распространённый вариант цикла по всей строке выглядит так:

while (*s++) {
    // работа с очередным символом строки: *s
}