Глобальні, локальні і статичні змінні 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Глобальні, локальні і статичні змінні



#include <iostream.h>float x;//глобальна зміннаfloat sum(float a,float b)//функція sum {//a, b - локальні змінніstatic int k=0;//статична зміннаfloat x;//локальна змінна для sumx=a+b;cout<<++k<<endl;return x;}void main(){float x;//локальна змінна для mainx=5;::x=6;//доступ до глобальної змінноїcout<<sum(x,::x)<<endl;cout<<sum(1,3)<<endl;}

Масив як параметр функції

#include <iostream.h>int sum1(int A[5])//оголошення функції sum1{//тут можлива зміна масиву Vint s=0;for(int i=0;i<5;i++) s=s+A[i];return s;//повернути значення суми елементів масиву s}int sum2(int *A)//оголошення функції sum2{//тут можлива зміна масиву Vint s=0;for(int i=0;i<5;i++) s=s+A[i];return s;//повернути значення суми елементів масиву s}void main(){int V[5]={1,2,3,4,5};//оголошення локального масивуcout<<sum1(V)<<endl;//передача аргументів по посиланнюcout<<sum2(V)<<endl;//передача аргументів по посиланню}

Рядки і функції обробки рядків

#include <iostream.h>#include <string.h>//заголовочний файл з функціями обробки рядківvoid main(){//оголошення і ініціалізація рядків (масиву символів)char s[20]="cpp";char s2[20]="";char s3[]={'h','e','l','l','o','\0'};*s='C';//присвоїти першому символу рядка 'C'*(s+1)='+';//другому символу*(s+2)='+';//третьому символу*(s+3)='!';//четвертому символу//вивести довжину рядківcout<<s<<" "<<strlen(s)<<endl;cout<<s3<<" "<<strlen(s3)<<endl;strcpy(s2,"plus");//копіювати в рядокcout<<s2<<endl;//вивести рядокstrncpy(s2,"C plus plus",6);//копіювати в рядок 6 символівcout<<s2<<endl;char *p=strstr(s,"++");//знайти підрядок в рядкуcout<<p<<endl;strcat(s,s3);//об'єднати рядкиcout<<s<<endl;float x=strtod("5.37",&p);//конвертувати рядок в дійсне числоgcvt(x,3,s);//конвертувати дійсне число в рядокcout<<s<<endl;}

Структури

#include <iostream.h>struct A//структура А (тип даних){char Name[10];//поле типу масив символівint Year;//поле цілого типуbool Sex;//поле логічного типу};//функція для виводу вмісту об'єктаvoid prn(A *ps){cout<<ps->Name<<endl;cout<<ps->Year<<endl;cout<<ps->Sex<<endl;}void main(){//оголошення і ініціалізація об'єкта s1A s1={"Ivan",1980,true};A s2;//оголошення об'єкта s2//присвоєння полям значеньstrcpy(s2.Name,"Vasyl");s2.Year=1981;s2.Sex=true;//динамічне створення структури//ps - вказівник на структуруA *ps=new A;//присвоєння полям значеньstrcpy(ps->Name,"Inna");ps->Year=1983;ps->Sex=false;//вивід вмісту об'єктівprn(&s1);prn(&s2);prn(ps);delete ps;//вивільнення ps}

Обробка виключних ситуацій

//слова try, throw, catch#include <iostream.h>#include <stdio.h>//клас виключної ситуаціїclass Ex{public:float x;//полеchar s[20];//полеEx(float a,char *str)//конструктор{x=a; strcpy(s,str);}};void main(){float a=1,b,c;do//початок циклу{cin>>b;//ввести b//блок, в якому можливе виникнення виключної ситуаціїtry {if (b<0) throw b;//генерувати виключну ситуацію floatif (b==0) throw "b=0";//генерувати виключну ситуацію char*if (b>1000) throw Ex(b," b>1000");//генерувати виключну ситуацію Exif (b==1) throw true;//генерувати виключну ситуацію boolc=a/b;cout<<c<<endl;//вивести с} //перехоплення виключної ситуації floatcatch (float x){cout<<"b="<<x<<endl;}//перехоплення виключної ситуації char*catch (const char *s){cout<<s<<endl;}//перехоплення виключної ситуації Excatch (Ex obj) {cout<<obj.x<<obj.s<<endl;}//перехоплення інших виключних ситуаційcatch (...){cout<<"warning! exception!\n";}}while(getchar()!='q');//поки не натиснуто q}

3 Об’єктно-орієнтоване програмування мовою C++

Простий клас

#include <iostream.h>//клас Aclass A{//відкриті члени класуpublic:int a;//поле цілого типу avoid print()//метод print{cout<<a<<endl;}};void main(){A obj;//оголошення об’єкту obj типу Aobj.a=2;//присвоїти полю a об’єкта obj 2obj.print();//виклик методу print об’єкта obj}

Структура

#include <iostream.h>//структура Astruct A{//відкриті члениint a;//поле цілого типу avoid print()//метод print{cout<<a<<endl;}};void main(){A obj;//оголошення об’єкту obj типу Aobj.a=2;//присвоїти полю a об’єкта obj 2obj.print();//виклик методу print об’єкта obj}

Об’єднання

//об'єднання#include <iostream.h>union A//об'єднання A{int x;//поле x цілого типуfloat y;//поле y дійсного типу};int main(){A u;//створити екземпляр u об'єднання Au.x=1;//присвоїти x 1u.y=2;//присвоїти y 2, x не доступнеcout<<u.x<<endl;//помилка!cout<<u.y<<endl;//об’єднання містить тільки дане yreturn 0;}

Конструктор

#include <iostream.h>class A //клас A{int a,b;//закриті поля класуpublic://відкриті члени класу//конструктор (метод) зі списком ініціалізації закритих полівA(int inita,int initb):a(inita),b(initb){};void print()//метод{cout<<a<<" "<<b<<endl;}};void main(){A obj(2,3);//створення об’єкту і виклик конструктораobj.print();//виклик методу}

Деструктор

#include <iostream.h>class A{char *a;int len;public:A(int ln)//конструктор A{len=ln;//динамічно виділити пам’ять для масиву символів кількістю len//вказівник a вказує на перший елемент масивуa=new char[len];}~A()//деструктор ~A{delete a;}//вивільнити пам’ять для avoid input(char *s)//метод для вводу рядка{a=s;}void print()//метод для виводу рядка{cout<<a<<endl;}};void main(){A obj(4);//створити об’єкт і викликати конструкторobj.input("hello");//викликати методobj.print();//викликати метод//викликати деструктор}

Конструктор копіювання



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 183; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.114.125 (0.006 с.)