C++

Указатели (референции и дереференции) в C++

0

След първоначалния урок за „референции“ в C++„, който общо взето не говори нищо, реших да направя нов по-пълен „урок“. Ще се опитам да обясня защо те са много важни и къде се използват. Всяка променлива,константа,функция,масив,клас,структура и т.н. е записана в паметта в дадено „депо“.
Ето примерен код:

// Създаваме указател от тип int. Създаденият указател трябва да има същия тип на променливата към, която ще сочи.
int * pointer;
// Създаваме две променливи от тип int.
int ref1,ref2;
// Указателят сочи към адреса на ref1 (Указателят присвоява адреса на ref1 в паметта)
pointer = &ref1;
// Променяме съдържанието на на променливата, към чието място в паметта сочи указателя pointer
* pointer = 10;
// Указателят сочи към адреса на ref2 (Указателят присвоява адреса на ref2 в паметта)
pointer = &ref2;
// Променяме съдържанието на на променливата, към чието място в паметта сочи указателя pointer
* pointer = 20;

Указателите са изключително полезни при c/c++. Така вие имате достъп до паметта. Тук се включва и така наречената указателна аритметика. Това означава, че на даден указател можем да присвоим адреса на паметта на promenliva1. След това увеличаваме стойността на указателя и имаме достъп до promenliva2. Ще ви дам пример с масиви.

// създаваме указател
int * pointer;
// създаваме масив
int arr[5];
// на указателя се записва адреса на първия елемент на масива
pointer = &arr;
// на указателя се записва адреса на втория елемент на масива
pointer++
// на указателя се записва адреса на третия елемент на масива
pointer = &arr[2];
// ще променим стойността на четвъртия елемент на масива
*(pointer+1) = 20;
// ще присвоим на на указателя адреса на петия елемент
pointer = &arr + 4;

Ето така можем да сменяме стойностите на масив, както и на променливи.

Чрез указатели може да се заделя и динамична памет. В другия урок ще обясня за нея.
Могат да се създават указатели и на указатели.

int **p,*p2;
int a=5;
p2 = &a;
p = &p2;

Има и доста други възможности на указателите. Подробности за тях можете да видите тук :)

Референции в c++

0

Тук ще ви въведа в референциите в c++. Това са 2 много силни оператора в c++, които трябва да знаете за да продължите своето професионално развитие.
Референцията така да се каже е положението на даден запис в паметта. Примерно създаваме променлива а. За да покажем нейното съдържание просто пишем cout < < a; и готово. Но тази променлива има отредено място в паметта, която се опраделя от операционната система. За щастие ние програмистите не трябва да определяме нейното място, защото щеше да стане наистина доста по-сложно. В някои случаи се налага да видим нейният адрес в паметта и това става чрез специалния оператор &. Примерно пишем.

int a = 15;
int b = a;
int c = &a;

В нашия код a е равно на 15, b=15, но c е равно на адреса на променливата a, който примерно е 0x22ff74.
Това е всичко за референциите в c++. В следващия урок ще ви покажа повечко за дереференциите. Не карам уроците много-много под ред, тъй като трябва да покажа още доста неща преди референциите като основни математически операции, цикли, условни оператори.

C++ – структура на една програма

0

Ето първо малко код

#include <iostream>
using namespace std;
int main ()
{
int a,b;
cout < < „Vuvedi stoinost za a \n“;
cin >> a;
cout < < „Vuvedi stoinost za b \n“;
cin >> b;
cout < < a + b << endl;
system(„pause“);
return 0;
}

Сега ще обясня ред по ред:
#include <iostream> – инклудваме библиотеката iostream – която поддържа функциите cin и cout (за въвеждане и изкарване на информация. вход и изход.). Примерно можем да добавим само библиотеката ostream. Така ще можем да използваме функията cout. Можем също да инклудем и библиотеката istream. Така ще можем да използваме функцията cin.
В c++ има още много библиотеки и в зависимост какво искате да правите, те трябва да се включват. Включването на библиотеки е прието да става единствено в най-горният ред (по друг начин ще ви даде най-вероятно грешка).
using namespace std; – неймспейсовете (namespaces) са кутийки, които съдържат класове, функции, променливи. Ако напишете using namespace std; за всички класове, функции, променливи ще се ползва неймспейса std и няма да пишете примерно:

cout<<mynamespace:promenliva

. Отделно можете да създавате още „кутийки“, които да съдържат променливи, функции и класове и да ги викаш. Така при създаване на 2 променливи в 2 кутиийки те няма да се презапишат взаимно.
int main () { } – това е като основна функция.
int a,b; – декларираме променливите. Т.е. придаваме им какъв тип ще са (int – целочислено число) и какво име ще имат. В нашия случай ние създаваме променливите a и b, които са целочислени числа (16,0,15,-16,99999). На тези две променливи можем да придадем и друг тип – float, double, char и други. За тях може да се зададе и дали са unsigned или signed. Прието е променливите да са signed. Примерно ако a е signed int, то тази промелива може да обхваща числа от -2,147,483,648 до +2,147,483,648. Ако обаче е unsgined ще обхваща числа от 0 до 4,294,967,295. Внимавайте какви типове данни задавате на вашите променливи. Unsigned типовете заемат 2 пъти повече памет от signed. Ако числата ще са малки използвайте short int и т.н.
cout < < „Vuvedi stoinost za a \n“; – изкарва информация в програмата. Примерно:

cout << „Hello World!“ << „This is my first c++ program \n“;
Можем да го запишем и директно
cout << „Hello World! This is my first c++ program \n“;
\n означа нов ред.
cout << „Hello World! This is my first c++ program \n“;
е еквивалентно на
cout << „Hello World! This is my first c++ program“<<endl;

cin >> b; е за въвеждане на информация от потребителя. Примерно при изпълнение на този код от нас ще се иска да въведем число за b и да натиснем enter за да продължи изпълнението на програмата.
system(„pause“); – този ред означава, че програмата няма да се затвори автоматично при изпълнение.
return 0; – връща 0. Т.е. това е краят на програмата!
Е разгледайте кода, посетете официалния сайт на c++, има и доста онлайн уроци! Учетете и се развивайте!

Въведение в C++

Какво е c++?
C++ е език за програмиране от трета генерация.
Защо да изберете c++ ?
Защото пишейки на c++ ще се научите наистина да разбирате що е програмиране и какво представлява. Пишейки на c++ вие ще научите и повече за hardware-a – как рабооти, кое за какво. C++ е както базов, така и език за много напреднали. Т.е. на c++ можете да направите всичко, но за някои неща с други езици ще се справите по-бързо. И нещо по-интересно: PHP е писан на C (като c++ но минуси – по-малко възможни парадигми, проблеми с неймспейсове и т.н.), а facebook ще бъде пренаписан на c/c++ за да работи още по-бързо. Пишейки на c++ вие имате директен достъп до hardware-a на даден компютър и можете да се възползвате от всичката памет!
Ако сте писали на друг език php, java, pascal, basic или там квото друго можете да сте напипали през годините, то ще ви е по-лесно да работите на c++, особено ако сте писали на java макар и моделът малко да се различава.
Първоначално ще ви покажа една проста програмка за въвеждане на 2 числа от клавиатурата и връщане на техния сбор

#include <iostream>
using namespace std;
int main ()
{
int a,b;
cout < < "Vuvedi stoinost za a \n";
cin >> a;
cout < < "Vuvedi stoinost za b \n";
cin >> b;
cout < < a + b << endl;
system("pause");
return 0;
}

Това е една проста програмка. Най-вероятно нищо няма да разберете, но ви уверявам, че след няколко урока ще усвоите добре някои от основните неща в c++.
Само да спомена като допълнение. C++ се изучава в голяма част от училищата и в повечето университети. Така че е във ваш плюс да го научите :)

Go to Top