Приклад. #include<iostream.h>
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr(); int n; cout<<"n = "; cin>>n;
int *a = new int [n];
for (int i=0;i<n;i++)
{cout<<"a["<<i<<"] = ";cin>>a[i];}
cout<<"Введений масив:\n";
for (i=0;i<n;i++) cout<<"a["<<i<<"] = "<<a[i]<<endl;
delete [ ]a; getch();
}
.3 Вказівники і стрічки.
Рядкова константа, написана у вигляді "я рядок" є масив символів. У внутрішньому представленні цей масив закінчується нульовим символом '\0', за яким програма може знайти кінець рядка. кількість зайнятих комірок пам'яті на одну більше, ніж кількість символів, поміщених між подвійними лапками.
Операції
для роботи з рядком як з єдиним цілим в Сі не передбачені. Існує важлива відмінність між наступними визначеннями:
char ames[] = "now is time"; /* масив */
char *pmessage = "now is time"; /* покажчик */
аmes - це масив, такої розмірності, що в ньому якраз поміщається вказана послідовність символів і '\0'. Окремі символи всередині масиву можуть змінюватися, але аmes завжди указує на одне і те ж місце пам'яті. В протилежність йому pmessage є вказівник, який ініціалізований так, щоб вказувати на рядкову константу. А значення вказівника можна змінити, і тоді останній вказуватиме на що-небудь інше. Крім того, результат буде невизначений якщо буде спроба змінити вміст константи.
Якщо ім'я масиву передається функції, то остання одержує як аргумент адресу його початкового елемента. Функції, що всередині викликається, цей аргумент є локальною змінною, що містить адресу. Ми можемо скористатися відзначеним фактом і написати ще одну версію функції strlen, що обчислює довжину рядка.
Дата добавления: 2015-08-26; просмотров: 496;