Latest web development tutorials

Wskaźnik C ++ arytmetyczna

Wskaźniki C ++ Wskaźniki C ++

Wskaźnik jest adresem reprezentacji liczbowej. W związku z tym, można wykonywać operacje arytmetyczne na wskaźniki. Wskaźnik może być cztery operacja arytmetyczna: +, -, +, -.

Załóżmyptr jest wskaźnikiem do adresu wskaźnika całkowita 1000, jest 32-bitową liczbą całkowitą, niech arytmetyczna wskaźnika, aby wykonać następujące czynności:

ptr++

Po wykonaniu powyższej operacjiptr punkty do pozycji 1004, ponieważ PTR każdy dodatkowy czas będzie to wskazywać na następnej pozycji liczby całkowitej, że aktualna sytuacja wróciła cztery bajty.W przypadku tej operacji nie będzie miało wpływu na wartość rzeczywistą lokalizację pamięci, przesuń kursor do następnego miejsca w pamięci. Jeśliptr punkty do adresu 1000 znaków, powyższa operacja spowoduje wskaźnik do pozycji 1001, ponieważ następnej pozycji znaku w 1001.

Zwiększanie wskaźnika

Chcemy użyć wskaźnika zamiast tablicy w programie, ponieważ zmienna wskaźnik jest zwiększany, a tablica nie może wzrosnąć, ponieważ tablica jest stałym wskaźnikiem. Poniższy program zwiększa zmienny wskaźnik do sekwencyjnego dostępu do każdego elementu w tablicy:

#include <iostream>

using namespace std;
const int MAX = 3;

int main ()
{
   int  var[MAX] = {10, 100, 200};
   int  *ptr;

   // 指针中的数组地址
   ptr = var;
   for (int i = 0; i < MAX; i++)
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;

      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;

      // 移动到下一个位置
      ptr++;
   }
   return 0;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Address of var[0] = 0xbfa088b0
Value of var[0] = 10
Address of var[1] = 0xbfa088b4
Value of var[1] = 100
Address of var[2] = 0xbfa088b8
Value of var[2] = 200

Zmniejszamy wskaźnik

Podobnie, wskaźnik jest zmniejszona odjęcie liczby bajtów, które ma wartość typu danych w następujący sposób:

#include <iostream>

using namespace std;
const int MAX = 3;

int main ()
{
   int  var[MAX] = {10, 100, 200};
   int  *ptr;

   // 指针中最后一个元素的地址
   ptr = &var[MAX-1];
   for (int i = MAX; i > 0; i--)
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;

      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;

      // 移动到下一个位置
      ptr--;
   }
   return 0;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Address of var[3] = 0xbfdb70f8
Value of var[3] = 200
Address of var[2] = 0xbfdb70f4
Value of var[2] = 100
Address of var[1] = 0xbfdb70f0
Value of var[1] = 10

Porównaj wskaźnik

Wskaźnik może być zastosowany do porównania związek między operatorami, takich jak == <i>. Jeśli punkty P1 i P2 do dwóch powiązanych zmiennych, takich jak z szerokim wachlarzem różnych elementów, może być wielkość P1 i P2 w porównaniu.

Następująca procedura modyfikuje powyższym przykładzie, tak długo jak adres ostatniego elementu o zmiennej wskaźnika jest adres tablicy jest mniejsza niż lub równa & var [max - 1], umieścić zmienną wskaźnika zwiększa się:

#include <iostream>

using namespace std;
const int MAX = 3;

int main ()
{
   int  var[MAX] = {10, 100, 200};
   int  *ptr;

   // 指针中第一个元素的地址
   ptr = var;
   int i = 0;
   while ( ptr <= &var[MAX - 1] )
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;

      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;

      // 指向上一个位置
      ptr++;
      i++;
   }
   return 0;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Address of var[0] = 0xbfce42d0
Value of var[0] = 10
Address of var[1] = 0xbfce42d4
Value of var[1] = 100
Address of var[2] = 0xbfce42d8
Value of var[2] = 200

Wskaźniki C ++ Wskaźniki C ++