|
Программирование >> Процедурные приложения
Рис. 9.17. Заполнение ячек данными Как показано на рис. 9.18, перемещение блока сопровождается перемещением всех связанных с ним данных, что реализуется следующими строками программы: *pinewblock *(pinewblock + *(pinewblock + 2 **ppiresult a; 1) = **ppiresult b; ppiresult c; Поскольку указатель pinewblock содержит адрес первой ячейки блока, то для того чтобы обратиться к следующим ячейкам, необходимо воспользоваться уже знакомыми нам арифметическими операциями над указателями. При этом арифметическое выражение следует взять в скобки, чтобы первой была выполнена операция сложения, а затем применен оператор раскрытия указателя (*). ppire3ult a pinewblock pioldblock
Рис. 9.18. Создание и заполнение нового динамического блока ячек На рис. 9.19 показано, что произойдет после вызова функций free()и vassign() для переадресации указателей массива pivirtual arrayна ячейки нового блока. Рис. 9.19. Переадресация указателей массива pivirtual array Самое важное, что наглядно демонстрирует рис. 9.19, заключается в том, что указатели ppiresult a, ppiresult b и ppiresult c не изменились в ходе выполнения программы. Поэтому когда программа выводит на экран их значения, мы видим все ту же последовательность чисел 7, 10 и 15, хотя размещение соответствующих ячеек в памяти изменилось. Массивы строковых указателей Простейший способ управления массивом строк состоит в создании массива указателей на эти строки. Это гораздо проще, чем объявлять двухмерный массив символов. В следующей программе для отображения на экране трех разных сообщений об ошибках применяется массив указателей на строки. arraystr.c Эта программа на языке С с массивом указателей на демонстрирует строки. работу #include <ctype.h> #include <stdio.h> #define INUMBER OF ERRORS 3 char *pszarray[INUMBER OF ERRORS]
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |