Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Урок 17. Строки. Часть1
- 1. Особенности строк.
- 2. Ключевое слово const.
- 3. Строки и указатели
- 4. Аргументы в main.*/
- #include <stdio.h>
- void printString (const char * string)
- /*void printString (const char string[] это точно такая
- запись по смыслу*/
- {
- printf ("%s\n", string);
- }
- void printArrayString (const char ** string)
- /*void printArrayString (const char * string[]) можно также записать*/
- {
- printf ("%s\n", string[0]);
- printf ("%s\n", string[1]);
- printf ("%s\n", string[2]);
- }
- int main (void)
- {
- char hello1[] = { 'H', 'e', 'l', 'l', '0', '1', '\0' };
- /* \0 указывает на то, это строка.
- Без этого знака - это просто массив символов.
- Строка завершается этим знаком.
- Данная комбинация предназначена для чтения, чтобы такие функции,
- как printf могли иметь индикатор конца строки, чтобы они читали
- символы посимвольно безостановочно, пока не наткнутся на данный символ.
- Пустые строки всегда содержат данный знак.*/
- char hello2[] = "Hello2";
- const char * hello3 = "Hello3";
- /*В этой третье форме мы не можем изменять
- изменять знечение в массиве, т.е. в том, в котором
- мы массив задекларировали с помощью указателя.
- Т.е. изменять можно, но с очень большой вероятностью
- может произойти ошибка. Т.е. эту строку мы можем
- использовать только для чтения.
- Ключевое слово const. Это слово говорит о том, что
- знечение этой переменной изменять больше нельзя в
- процессе выполения программы. Только чтение.
- const char * hello3 = "Hello3";
- */
- const char * hello4 = "Hello4";
- printf ("%s\n", hello1);
- printf ("%s\n", hello2);
- printf ("%s\n", hello3);
- hello1[0] = 'X';
- printf ("%s\n", hello1);
- printf ("%c\n", *hello3);
- printf ("%c\n", *hello4);
- /*При const мы не можем менять значение,
- но мы можем менять адрес.
- %p - это маркер для выведения адреса*/
- printf ("Адрес дло присваивания: \n");
- printf ("Hello3: %p\n", hello3);
- printf ("Hello4: %p\n", hello4);
- hello3 = hello4;
- printf ("Адрес после присваивания: \n");
- printf ("Hello3: %p\n", hello3);
- printf ("Hello4: %p\n", hello4);
- /*const char * const hello4 = "Hello4"; говорит о том,
- что сейчас не может изменить и значение и адрес.*/
- printString (hello3); //вызываем функцию
- printString (hello4);
- const char * cities[] = { "Moscow", "New-York", "Tokyo" };
- /*Такой записью мы создаем массив строк, точнее сказать
- мы создаем массив адресов. Это многомерный массив.
- Можно было бы задать этот массив так:
- const char cities[количество элементов массива][Общая длина строки] = { };
- const char cities[][] = { };
- const char * cities[] = { "Moscow", "New-York", "Tokyo" };
- в этом случае компилятор сам рассчитывает длину строк и сколько памяти
- для этого необходимо. */
- printf ("\nCities:\n");
- printf ("%s\n", cities[0]);
- printf ("%s\n", cities[1]);
- printf ("%s\n", cities[2]);
- // const float * prices[] = { {0,0}, {0,0}, {0,0} };
- /*Наглядная форма декларации многоменрного массива.
- Массив содержит три массива, каждый из которых содержит по два элемента.
- const float prices[3][2] = { {0, 0}, {0, 0}, {0, 0} }; можно было бы это записать
- в такой форме.*/
- printf ("\nГорода (выводим функцией многомерный массив): \n\n");
- printArrayString (cities);
- return 0;
- }
Add Comment
Please, Sign In to add comment