Операції * і &, їх використання, призначення і взаємозв’язок

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    537,54 Кб
  • Опубликовано:
    2014-10-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Операції * і &, їх використання, призначення і взаємозв’язок













Курсова робота

з дисципліни програмування

на тему «Операції * і &, їх використання, призначення і взаємозв’язок»















Вступ

Дуже потужним засобом розробки програм мови С++ є вказівники. У даній курсовій роботі описано використання та призначення операцій * та &, які використовуються при роботі з вказівниками. & дозволяє отримати адресу елемента в пам'яті, а * - отримати значення змінної за відомою адресою.

Також в курсовій роботі частково розглядаються вказівники, а саме використання вище згаданих операцій. Наведені приклади програм з використанням вказівників.


1. Теоретична частина

.1 Вказівники

Вказівники - це змінні, значеннями яких є адреси пам’яті. Якщо змінна безпосередньо посилається на своє значення, то вказівник посилається на значення змінної не безпосередньо або непрямо. Він тільки володіє значенням пам’яті імені відповідної йому змінної. Посилання на значення змінної через вказівник називається непрямою адресацією.

Вказівники, перед тим як будуть використовуватися в ході програми, повинні бути визначені. Наприклад:

*countPtr, count;

Вище визначається змінна countPtr типу int * (вказівник на цілочисельне значення). Крім того також визначається змінна count типу int, проте символ «*» відноситься тільки до змінної countPtr. Спочатку вказівник ініціалізується нульом, або макросом NULL, який знаходиться в директиві процесора стандартної бібліотеки С - <stddef.h>, яка включається в інші директиви, наприклад: в директиву <stdio.h>. Коли значення 0 присвоюється змінній-вказівнику то здійснюється його перетворення до вказівника відповідного типу і значення 0 - це єдине значення яке може бути присвоєне вказівнику безпосередньо.

.2 Операції & і *

Операція взяття адреси «&» являється унарою, яка повертає адресу свого операнда. Наприклад, якщо об’явити змінні:

int y=5; i int *yPtr;

то оператор yPtr=&y; присвоїть змінній-вказівнику yPtr адресу змінної у. Така операція називається розіменуванням і повертає значення об’єкту на який посилається вказівник (операнд). В даному прикладі оператор

("%d", *yPtr);

виведе значення змінної у рівне 5. При вказівниках операції «*» і «&» доповнюють одна одну. В такому разі установку адреси змінної можна здійснювати так:

= &y; і лінійка програми("вивід змінної yPtr\n", *&yPtr)

виведе те саме значення вказівникової змінної. Нижче наведено фрагмент програми, який демонструє застосування операцій над вказівниками.

/*Застосування операцій * і & для вказівників*/

#include <stdio.h>main()

{a; //a - ціле число*aPtr; // aPtr - вказівник на ціле

а=7;= &a; // aPtr встановлений на адресу а("The address of a is %p\n"

"The value of aPtr is %d", a, aPtr);("\n\nThe value of a is %d\n"

"The value of *aPtr is %d", a, aPtr);("\n\nShowing that * and & are complements of each other.\n"

"&*aPtr = %p\n*&aPtr = %p\n", &*aPtr, *&aPtr);0;

} // кінець main.

Виконання програми представить нам наступні результати:

address of a is 0012FF88value of aPtr is 0012FF88value of a is 7value of *aPtr is 7that * and & are complements of each other.

&*aPtr =0012FF88

*&aPtr =0012FF88

Існують випадки, коли операція взяття адреси змінної «&» може бути незастосовна. Це трапляється, коли програміст намагається передавати не одне значення змінної, а намагається передати масив або змінювати значення змінної при обчисленні і виводити її уже із обчисленим значенням а не з первинним. Для того в С здійснюється операція «імітації виклику по посиланню». Нехай задається прототип функції обчислення куба:

cubeVolum (int *nVol);

в функції main відповідно ініціалізується змінна сторони куба b і передається її значення у функцію cubeVolum на обчислення об’єму куба, а при поверненні значення змінної повинно відповідати значенню об’єму куба. Для цієї мети в головній функції здійснюється:

int b = 5;(&b); /*звернення до функції обчислення об’єму*/("значення об’єму куба%d\n", b); /*b-виводить значення об’єму*/

В функції обчислення об’єму, відповідно, здійснюється так:

cubeVolum (int *nVol){

*nVol=*nVol**nVol**nVol; /*обчислення об’єму куба*/}

Нижче наведено приклад обчислення об’єму куба через піднесення числа до кубу.

/*Програма обчислення кубу через піднесення до третього степеня числа, застосовуючи передавання числа аргументом-вказівником*/

#include <stdio.h>cubeByReference (int nPtr); // прототипmain()

{number = 5; // ініціалізувати число("The original value of number is %d", number);

//Передати cubeByReference адресу числа(number);("\nThe new value of number is %d", number);0;//Успішне завершення функції main

}//кінець програми.

/*Обчислити куб *nPtr; модифікує змінну number в main*/cubeByReference (int nPtr)

{

*nPtr = *nPtr* *nPtr* *nPtr; // піднести до кубу *nPtr

}//кінець функції

Результат виконання програми представиться у вигляді.original value of number is 5new value of number is 125.

.3 Вказівники і масиви

За допомогою вказівників можна також передавати масиви. В цьому випадку розробники програм часто використовують функцію sizeof. Вказівник може бути інкрементований (++), декрементований (--), до вказівника може бути додане ціле число (+ або +=) і з вказівника може бути відняте ціле число (- або -=). Припустимо, що є казівник типу int, під який резервується 4 байти. Нехай вказівник yPtr приймає значення адреси пам’яті 3000. Тоді оператор yPtr +=2 дасть результат: 3000+2*4=3008. Дії ++yPtr або yPtr++ та -- yPtr або yPtr -- при застосуванні в масивах будуть давати можливість вказівнику отримувати значення пам’яті на наступний і попередній елементи масиву. Якщо існує масив b[10] теж типу int, наприклад, то вказівник bPtr[1] буде вказувати на 1-ий елемент масиву b. Аналогічно можна виявити дії інших згаданих арифметичних операцій.

Масиви також можуть складатися із вказівників, які часто можуть утворювати масив символьних лінійок. При ініціалізації масиву:

*suit[4] = {"Hearts","Diamonds","Clubs","Spades"};

вираз suit[4] визначає масив з 4-х елементів. Специфікацією char * цей масив об’являється як масив вказівників на тип char. В масиві розміщені 4 значення: "Hearts", "Diamonds", "Clubs" і "Spades" як символьні лінійки, які зберігаються в пам’яті і в кінці яких значення «нуль» фіксує кінець кожної символьної лінійки. Тобто кожна лінійка вміщає на 1 символ більше. Відповідно, ці символьні лінійки займають в пам’яті 7, 9, 6, і 7 байт. І хоча здається, що в указаний масив заносяться лінійки символів, проте елементами масиву являються вказівники. Для прикладу наведено програму перетворення нижнього регістру символів у верхній.

/*Програму перетворення нижнього регістру символів у верхній*/

#include <stdio.h>

#include <ctype.h>convertToUppercase (char *sPtr); //прототип функціїmain()

{string[] = "characters and $32.98"; //масив симолів("The string before convertion is:%s", string); (string);("\nThe string after convertion is:%s\n", string);0;//завершення програми

}//кінець main

/*Перетворити лінійку в символи верхнього регістра*/convertToUppercase (char *sPtr);

{(*sPtr!='\0') { //текучий символ не '\0'(islower(sPtr)) {//якщо символ нижнього регістра,

*sPtr = toupper(*sPtr); //перетворити в верхній

}//кінець if

++sPtr //перемістити sPtr на наступний символ

}//кінець while

}//кінець функції convertToUppercase.

Результат виконання програми буде поданий у вигляді:

string before convertion is: characters and $32.98string after convertion is: CHARACTERS AND $32.98

Нижче наведена програма бульбашкового сортування, яка демонструє використання операцій * і &, а також передання аргументів неявно.

/*Програма бульбашкового сортування*/

//і друкує масив, що отримався

#include <stdio.h>

#define SIZE 10bubbleSort(int* const array, const int size); // прототипmain()

{

//ініціалізувати масивa[size] = {2,6,4,8,10,12,89,68,45,37};i; //лічильник("Data items on original order\n");(i=0; i<SIZE; i++) {//цикл по масиву а("%4d", a[i]);

}//кінець for(a, SIZE);//сортувати масив("\nData items in ascending order\n");(i=0; i<SIZE; i++) {//цикл по масиву а("%4d", a[i]);

}//кінець for("\n");0;//завершення програми

}//кінець функції main

/*Cортувати масив цілих даних шляхом бульбашкового сортування*/bubbleSort(int* const array, const int size)

{swap (int *element1Ptr, int * element2Ptr);//прототипpass; //лічильник проходівj; // лічильник порівнянь(pass=0; pass<size-1; pass++) {//цикл для контролю проходів(j=0; j<size-1; j++) {//цикл для контролю порівнянь

//поміняти сусідні значення, якщо їх порядок порушений(array[j]>array[j+1]) {(&array[j], &array[j+1]);

}//end if

}//кінець внутрішнього for

}//кінець внутрішнього for

}//кінець функції bubbleSort

/*Обміняти значення в комірках, на які вказують *element1Ptr, і *element2Ptr */swap (int *element1Ptr, int * element2Ptr)

{hold = *element1Ptr;

*element1Ptr=*element2Ptr;

*element2Ptr=hold;

}//кінець функції

Результат виконання програми поданий нижче.

items on original order

,6,4,8,10,12,89,68,45,37items in ascending order

,4,6,8,10,12,37,45,68,89


2. Практична частина

Задача №1

ЛІНІЙНІ ПРОГРАМИ

Скласти програму для обчислення значення функції

#include <stdio.h>

#include <math.h>

#include <conio.h>()

{float U1=12.3,T2=3.856,n0=840,n1=610;x=1.485,T1,U;=T2*sqrt(n0/n1);=(U1*x)/(T1/T2+1);("T1=%f\nU=%f",T1,U);();0;

}




Задача №2

ПРОГРАМИ З РОЗГАЛУЖЕННЯМ

Скласти програму для обчислення значення функції

 =0.854; b=3.625; =1.326; s=3.906

#include <stdio.h>

#include <math.h>

#include <conio.h>()

{float a=0.854, b=3.625, pi=3.14;s,i;("%f",&s);(s>1.5&&s<=b-a)

{=(sqrt(b)+pow(cos(a*a*s),2))/log(fabs(s-5));("\ns=%f i=%f",s,i);

}if(s>b)

{        i=a*b+tan(s/3+pi/12);("\ns=%f i=%f",s,i);

}();0;

}


Задача №3

вказівник операнд аргумент програма

ЦИКЛІЧНІ ПРОГРАМИ З РЕГУЛЯ РНОЮ ЗМІНОЮ АРГУМЕНТУ

Скласти програму для обчислення таблиці значень функції


Аргумент y змінюється від початкового значення y=-4.8 до кінцевого y=0.1, кількість значень функції n=8.

Крок зміни параметра циклу визначається за формулою:

∆y=(|yk-yn|)/n-1=(-4.8-0.1)/7=0.7

#include <stdio.h>

#include <math.h>

#include <conio.h>main()

{float a=3.2,pi=3.14;y=-4.8, z;(;y<=0.1;y+=0.7)

{=atan(a+y*y)/pow(log(a),2)+pi/6*a;("z=%f y=%f\n",z,y);

}();;

}


Задача №4

ЦИКЛІЧНІ ПРОГРАМИ З РЕГУЛЯРНОЮ ЗМІНОЮ АРГУМЕНТУ, ЯКІ МІСТЯТЬ РОЗГАЛУЖЕННЯ

Вивести на друк значення функції, які лежать в межах a>b>c, підрахувати їх кількість.

  

Аргумент х змінюється від початкового значення 3.4 з кроком 0.11 до кінцевого 6.6.

#include <math.h>

#include <conio.h>main()

{float y=28.3,z=4.21,a=5.5,c=2.8;b,x;(x=3.4;x<=6.7;x+=0.11)

{=5*(y-x)*sqrt(y-z*x)/(1+(y+x*x)*log(z));(b<a&&b>c)

{("b=%-12f x=%.2f\n",b,x);

}

}();;

}


Задача №5

ОДНОВИМІРНІ МАСИВИ

Дано одновимірний масив В, який складається з 15 елементів. Сформувати вектор А, першим елементом якого є найменше число, а наступні елементи вектора А - числа, які знаходяться за найменшим елементом масиву В.

#include <stdio.h>

#include <conio.h>()

{i,n=0,k,b[15],min,a[15];(i=0;i<15;i++)("\n%d",&b[i]);=b[0];(i=0;i<15;i++)(b[i]<min)

{=b[i];=i;

}=15-n;[0]=min;++;(i=1;n<15;i++,n++)[i]=b[n];(i=0;i<k;i++)(" %d",a[i]);();0;

}




Задача №6

ЦИКЛІЧНІ ПРОГРАМИ З НАКОПИЧЕННЯМ СУМИ АБО ДОБУТКУ

Дано два одновимірні вектори Х і Т, кожний з яких складається з 10 елементів. Обчислити їх скалярний добуток.

#include <stdio.h>

#include <conio.h>()

{x[10],t[10],i,s=0;("X: \n");(i=0;i<10;i++)("%d",&x[i]);("T: \n");(i=0;i<10;i++)("%d",&t[i]);();("X: ");(i=0;i<10;i++)("%d ",x[i]);("\nT: ");(i=0;i<10;i++)("%d ",t[i]);(i=0;i<10;i++)

{+=x[i]*t[i];

}("\nSkalarnyi dobutok = %d",s);();0;

}


Задача №7

ВКЛАДЕНІ ЦИКЛИ


х змінюється від 12,4 до 19,4 з кроком 3,5

Значення індексної змінної:

1=-3.46        b2=1.8523=3.03     b4=-2.57

#include <stdio.h>

#include <math.h>

#include <conio.h>()

{b[4]={-3.46,1.852,3.03,-2.57},x,a;i;(x=12.4;x<=19.4;x+=3.5)

{("x=%.1f\n",x);(i=0;i<4;i++)

{=1+pow(sin(b[i]*b[i]+x/(i+1)),2);("a=%.3f\n",a);

}

}();0;

}


Задача №8

ДВОВИМІРНІ МАСИВИ, СОРТУВАННЯ МАСИВІВ

Для кожного рядка заданої матриці А розміром 8х5 знайти та надрукувати номери стовбців, які містять нульові елементи, і їх кількість.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>main()

{a[8][5],i,j,k;();(i=0;i<8;i++)(j=0;j<5;j++)[i][j]=random(9);(i=0;i<8;i++)

{=0;("line %d: ",i);(j=0;j<5;j++)(a[i][j]==0)

{("%d ",j);++;

}("\tkilkist 0: %d\n",k);

}();

}


Задача №9

ПРОЦЕДУРИ-ФУНКЦІЇ

Обчислити значення перших n (n<30) елементів геометричної прогресії з допомогою підпрограми, якщо відомий перший елемент прогресії а та знаменник прогресії q. Кожний наступний елемент геометричної прогресії утворюється множенням попереднього на знаменник прогресії. Для розміщення в пам’яті обчислених елементів їх слід оголосити як одновимірний масив.

#include <math.h>

#include <conio.h>funkt(float, float, float x[20]);main()

{a,q,x[20];i;<<"a= ";>>a;<<"\nq= ";>>q;(a,q,x);(i=0;i<20;i++)<<endl<<x[i];();

}funkt(float a, float q, float x[20])

{i;[0]=a;(i=1;i<20;i++)

{[i]=x[i-1]*q;

}

}


ПІДПРОГРАМИ-ФУНКЦІЇ

Скласти програму для визначення величини

де a=1, b=32.

Обчислення інтегралу оформити у вигляді процедури-функції, використовуючи метод Сімпсона:


Де h=(b-a)/n=0.5

#include <iostream.h>

#include <conio.h>

#include <math.h>integ();main()

{int a=1,b=32;q;=integ();+=pow((a+b),0.3333333);<<"\nQ="<<q;();

}integ()

{float h=0.5, n=62;q,x=0;i;=x*x*x*exp(x+sin(x));=n;+=x*x*x*exp(x+sin(x));(i=1;i<62;i++)

{(i%2!=0)+=4*i*i*i*exp(i+sin(i));+=2*i*i*i*exp(i+sin(i));

}*=h/3;q;

}

Задача №11

ОБРОБКА ТЕКСТІВ

Дано текст, який містить букви і пропуски. Знайти слова, які закінчуються буквосполученням «ати», і замінити буквосполучення на «али». Словом вважати послідовність букв розділених пропусками.

#include <conio.h>

#include <stdio.h>()

{text[64]="atu iatu atuf atu";*t=text, *temp;(*t)

{(*t=='a')

{++;(*t=='t')

{=t;++;(*t=='u')

{++;(*t==' '||*t=='\0')

*temp='l';

}

}

}++;

}("%s",text);();0;

}


Задача №12

ФАЙЛИ

Сформувати файл ”В”, що містить інформацію про книги з програмування в бібліотеці: прізвище автора, назва видавництва, рік видання, алгоритмічна мова. Записати у файл ”ВІ” список книг, виданих видавництвом ”Просвіта” після 1990 року, а також кількість книг з мови БЕЙСІК. Ці дані також вивести на друк.

#include <conio.h>

#include <stdio.h>

#include <string.h>biblioteka

{avtor[15];vyd[15];year;mova[10];

};main()

{i;book;*bPtr, *biPtr;s[10]={"prosvita"},s1[10]={"beisik"};((bPtr=fopen("B.txt","w+")) == NULL)("Error");

{("vvedit' avtor, vydavnyctvo, rik i algor. movy\n");(i=0;i<5;i++)

{("? ");("%s %s %d %s", &book.avtor,&book.vyd,

&book.year,&book.mova);(&book,sizeof(struct biblioteka),1,bPtr);

}

}(bPtr);((biPtr=fopen("BI.txt","w")) == NULL)("Error");

{(!feof(bPtr))

{(&book,sizeof(struct biblioteka),1,bPtr);((strcmp(s,book.vyd)==0&&book.year>1990)||strcmp(s1,book.mova)==0)

{("%-15s%-15s%-10d%-10s\n",book.avtor,book.vyd,book.year,book.mova);(&book,sizeof(struct biblioteka),1,biPtr);

}

}

}(bPtr);(biPtr);();

}


Задача №13

РОЗВ’ЯЗАННЯ СИСТЕМИ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ МЕТОДОМ ГАУССА

Розв’язання системи лінійних алгебраїчних рівнянь методом Гаусса.


Числові значення коефіцієнтів системи

аі1

аі2

аі3

bі

0.71 0.1 0.12

0.1 0.34 -0.04

0.12 -0.04 0.1

0.29 0.32 -0.1



#include <iostream.h>

#include <conio.h>main()

{(j=0;j<3;j++)

{<<"Vvedit' a["<<(i+1)<<"]["<<(j+1)<<"]: ";>>a[i][j];

}<<"Vvedit' b["<<(i+1)<<"]: ";>>a[i][3];

}(i=0;i<3;i++)

{<<endl;(j=0;j<4;j++)<<a[i][j]<<"\t";

}<<endl;=a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[0][1]*a[1][2]*a[2][0]-[2][0]*a[1][1]*a[0][2]-a[1][0]*a[0][1]*a[2][2]-a[2][1]*a[1][2]*a[0][0];(det==0) cout<<"systema ne sumisna!!!/n";

{=a[1][0]/a[0][0];(j=0;j<4;j++)[1][j]-=a[0][j]*k;=a[2][0]/a[0][0];(j=0;j<4;j++)[2][j]-=a[0][j]*k;=a[2][1]/a[1][1];(j=1;j<4;j++)[2][j]-=a[1][j]*k;=a[2][3]/a[2][2];=(a[1][3]-a[1][2]*x3)/a[1][1];=(a[0][3]-a[0][1]*x2-a[0][2]*x3)/a[0][0];(i=0;i<3;i++)

{<<endl;(j=0;j<4;j++)<<a[i][j]<<"\t";

}<<"\n\nX1="<<x1<<"\nX2="<<x2<<"\nX3="<<x3;

}();

}



Задача №14

ІТЕРАЦІЙНІ ЦИКЛІЧНІ ПРОЦЕСИ

Розв’язати рівняння методом ітерацій

Інтервал ізоляції кореня: [2;3]

Похибка обчислення: 0.001

#include <iostream.h>

#include <conio.h>

#include <math.h>

#define E 0.001main()

{x=2,y,t;k=0;

{=2/log(fabs(x));=fabs(x-y);=y;++;

}(t>E);<<"X="<<x<<"\nKilkist' iteracyi = "<<k;();

}


Задача №15

РОЗВ’ЯЗАННЯ СИСТЕМИ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ МЕТОДОМ ПРОСТОЇ ІТЕРАЦІЇ АБО МЕТОДОМ ЗЕЙДЕЛЯ

Розв’язати системи лінійних алгебраїчних рівнянь методом простої ітерації або методом Зейделя.

аі1аі2аі3bі




0.71 0.1 0.12

0.1 0.34 -0.04

0.12 -0.04 0.1

0.29 0.32 -0.1


#include <conio.h>

#include <iostream.h>

#include <math.h>

#define E 0.001main()

{i,j;a[3][3],x[3]={0,0,0},y[3],b[3],var,temp;<<"Vvedit' systemu rivnan' po radkah:\n";(i=0;i<3;i++)

{(j=0;j<3;j++)

{<<"Vvedit' a["<<(i+1)<<"]["<<(j+1)<<"]: ";>>a[i][j];

}<<"Vvedit' b["<<(i+1)<<"]: ";>>b[i];

}(i=0;i<3;i++)

{<<endl;(j=0;j<3;j++)<<a[i][j]<<"\t";<<b[i];

}<<endl;

{=0;(int i=0; i<3; i++)

{[i]=x[i];=0;(int j=0; j<3; j++)(j!=i) var+=(a[i][j]*x[j]);[i]=(b[i]-var)/a[i][i];+=fabs(y[i]-x[i]);

}

}(temp>E);(int i=0; i<3; i++)<<"\nX["<<(i+1)<<"]="<<x[i]<<"\t";();

}


Задача №16

ОСНОВИ ООП. ПРИНЦИПИ ПОБУДОВИ КЛАСІВ

Створити клас з полями та методами. Оголосити кілька об’єктів цього класу, використовуючи різні конструктори.

КОРАБЕЛЬ

поля:

ім'я - char*

водотоннажність - int

прізвище власника - char*

методи:

введення назви корабля

введення водотоннажності

зміна власника

виведення інформації про об’єкт

#include <iostream.h>

#include <conio.h>

#include <string.h>sudno

{name[20];tonag;vlasnuk[20];:();(char*,int,char*);SetName(char*);SetTonag(int);SetVlasnuk(char*);Show();

};main()

{();S;S1("Pobeda",3000,"Klimyuk");<<"#1:"<<endl;.Show();<<"#2:"<<endl;.Show();.SetName("Beda");<<"#1:"<<endl;.Show();.SetTonag(20000);.SetVlasnuk("Darmovis");<<"#1:"<<endl;.Show();();

{(name,"NO");=0;(vlasnuk,"NO");

}::sudno(char *a,int b,char *c)

{(name,a);=b;(vlasnuk,c);

}sudno::SetName(char *a)

{(name,a);

}sudno::SetTonag(int a)

{=a;

}sudno::SetVlasnuk(char *a)

{(vlasnuk,a);

}sudno::Show()

{<<name<<"\t"<<tonag<<"\t"<<vlasnuk<<endl;

}




Список використаної літератури

1.       Основи програмування і алгоритмічні мови. Методичні вказівки до лабораторних занять для студентів спеціальності “Професійна освіта. Комп’ютерні технології в управлінні та навчанні” для денної та заочної форм навчання / В.М. Мельник - Луцьк: ЛНТУ, 2011.- 62 с.

.        Харви Дейтел, Пол Дейтел. - Как програмировать на С

.        Архангельский А.Я. Приемы программирования в Borland C++.- М.: ООО “БИНОМ-ПРЕСС”, 2003.- 784 с.

.        Б. Страуструп. Язык программирования C++ = The C++ Programming Language / Пер. с англ. - 3-е изд. - СПб.;

.        Страуструп Б. Язык программирования C++. Специальное издание = The C++ programming language. Special edition. - М.: Бином-Пресс, 2007. - 1104 с. - ISBN 5-7989-0223-4

.        Страуструп Б. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. - М.: Вильямс, 2011. - С. 1248. - ISBN 978-5-8459-1705-8

.        Герберт Шилдт. Полный справочник по C++ = C++: The Complete Reference. - 4-е изд. - М.: Вильямс, 2011. - С. 800. - ISBN 978-5-8459-0489-8

Похожие работы на - Операції * і &, їх використання, призначення і взаємозв’язок

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!