русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Вказівники на рядкові константи


Дата додавання: 2014-04-22; переглядів: 942.


В далі приведеній програмі 12.11 визначено два рядки: один – з використанням операцій масиву, інший – з використанням вказівників.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

char str1[]="Означення через масив";

char* str2="Означення через вказівник";

cout<<str1<<endl;

cout<<str2<<endl;

// str1++;

str2++;

cout<<str2<<endl;

bioskey(0);

return 0;

}

Програма 12.11

В багатьох випадках ці два способи еквівалентні, обидва рядки ми можемо роздрукувати. Але є й різниця: str1 – вказівник-константа, а str2 – вказівник-змінна. Тому str2 може змінювати своє значення, а str1 – ні. Тому з str2 можлива операція ++ (виконуючи її, ми просуваємося вздовж рядка), а з str1 – ні.

Рядок, визначений як вказівник, значно гнучкіший, ніж визначений як масив.

 

Рядки як аргументи функцій

В програмі 12.12 показано, як рядки використовуються в якості аргументів. Функція друкує рядок, виводячи знаки по черзі.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

void dispstr(char*);//прототип

char str[]=”Oзначення через масив”;

dispstr(str);

bioskey(0);

return 0;

}

void dispstr(char*ps)

{while(*ps)//доки не досягнуто кінця рядка

cout<<*ps++;//посимвольний вивід

cout<<endl;

}

Програма 12.12

 

Адреса масиву str використана як аргумент при виклику функції dispstr(). Ця адреса є константою, але, оскільки вона передається за значенням, то в функції dispstr() створюється його копія. Це буде вказівник ps. Він може бути змінений і функція збільшує його, виводячи рядок на дисплей. Вираз *ps++ повертає наступний знак рядка. Цикл повторюються до досягнення знаку кінця рядка ‘\0’. Оскільки він має значення 0, яке інтерпретується як false, то в цей момент цикл закінчується.

 

Копіювання рядків з використанням вказівників

Вказівники можна використовувати для вставки значень в масив, як це показано в програмі 12.13: вона містить функцію, що копіює один рядок в інший.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

void copystr(char*,const char*);//прототип

char* str1=”Копіювання через вказівник”;

char str2[80];

copystr(str2,str1);

cout<<str2<<endl;

bioskey(0);

return 0;

}

void copystr(char*dest,const char* str)

{while(*str) //доки не досягнуто кінця рядка

*dest++=*str++;//копіювання

*dest=’\0’;//символ кінця рядка

}

Програма 12.13

 


<== попередня лекція | наступна лекція ==>
Передача масиву | Масив вказівників на рядки


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн