Потребителски панел
Запомни
Категории
C/C++ (17)
C# (8)
Java (5)
Visual Basic (18)
Delphi/Pascal (11)
Python (4)
Assembly (0)
Други (0)
Facebook
Указатели и масиви | Автор: admin | Дата: 29.04.2011


В случай, че не знаете какво е указател моля прочетете първо урока за указатели.

В концепцията на масивите и указателите има доста общи неща. Всъщност идентификатора на масива е указател сочещ към първият му елемент. Например следният код е валиден:
int numbers [20];
int * p;
p = numbers;

След изпълнението на този код, адреса към който сочат указателите p и numbers ще бъде един и същ, с единствената разлика, че адреса към който сочи p може да бъде променен, докато numbers винаги ще сочи първият елемент от масива с който е дефиниран. Поради тази причина numbers се нарича още константен указател (който неможе да бъде променен), затова и следният израз е невалиден:
numbers = p;

С всичко казано дотук, следният израз е напълно валиден:
#include <iostream>
using namespace std;

int main ()
{
int numbers[5];
int * p;
p = numbers; *p = 10;
p++; *p = 20;
p = &numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
return 0;
}

В урока за масиви, използвахме квадратни скоби ([]), за да определим индекса на елемент от масива, към който искахме да се обърнем. Има и друг начин за това:
a[5] = 0;
*(a+5) = 0;

Двата израза са напълно еквивалентни и просвояват стойност 0 на шестият елемент от масива (не забравяйте че се брои от 0, за това е 6-ти, а не 5-ти елемент).

Урока е подготвен специално за Programming-BG.com. Моля не копирайте без мое съгласие!
Източник: www.cplusplus.com

           


Беше ли Ви от полза урокът?
да не




Искате да пишете коментари? Влезте от тук или се регистрирайте!



Все още няма коментари за този урок.