Pointer Operations


Pointer Operations

The most important pointer operations are ++ and --. The table below shows some examples using pointer operation.
Las operaciones más importantes de los punteros son ++ y --. La tabla de abajo muestra algunos ejemplos usando las operaciones de los punteros.

Operation     Description  
p++; The pointer moves to the following element
p--;The pointer moves to the previous element
p += 5;The pointer moves forward five elements
p[0] = 10;The contents of the variable (pointed by the pointer) is modified
(*p)++;The contents of the variable (pointed by the pointer) is incremented by one

Tip
If a pointer points to an array, the pointer will point to the first element in the array. The operator & is not necessary in this case. Additionally, the pointer will behave as an array and the operator[] can be used.
Si un puntero apunta a un arreglo, el puntero apuntará al primer elemento del arreglo. El operador de & no es necesario en este caso. Adicionalmente, el punto se comportará como un arreglo y el operador[] puede ser usado.

Problem 1
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
     int n[]={5, 3, 7};
     int* p=n; // When using arrays, it is not necessary the &
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
     p++;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
     p++;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
}

Problem 2
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
     double x[]={2, 4, 6, 8, 10};
     double* p=x;
     p += 3;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
}

Problem 3
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
     double x[]={2, 4, 6, 8, 10};
     double* p=x;
     p += 5;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
}

Problem 4
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     double x[]={2, 4, 6, 8, 10};
     double* p=&x[3];
     p--;
     wstring texto;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
}

Problem 5
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     double x[]={2, 4, 6, 8, 10}; // XX, YY
     double* p=&x[6];
     p-=5; // same as p=p-5;
     wstring texto;
     texto = Sys::Convert::ToString(*p);
     this->MessageBox(texto, L"Hola", MB_OK);
}

Problem 6
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
      int i=0;
      double x[]={2, 4, 6, 8, 10};
      double* p=x;
      *p=5;
      p++;
      *p=11;
      for(i=0; i<5; i++)
      {
          Sys::Format(texto, L"%g", x[i]);
          this->MessageBox(texto, L"Hola", MB_OK);
     }
}

Problem 7
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
      int i=0;
      int n[]={3, 6, 9};
      int* p=n;
      for(i=0; i<3; i++)
      {
           (*p)+=2; // (*p)=(*p)+2;
           p++;
          Sys::Format(texto, L"%d", n[i]);
          this->MessageBox(texto, L"Hola", MB_OK);
      }
}

Problem 8
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
     int i=0;
     int n[]={5, 6, 7};
     int* p=n;
     for(i=0; i<3; i++)
     {
          Sys::Format(texto, L"%d", p[i]);
          this->MessageBox(texto, L"Hola", MB_OK);
     }
}
Hola
5

Hola
6

Hola
7

Problem 9
Compute the output of the program.
Calcule la salida del programa.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring texto;
     int i=0;
     int n[]={5, 6, 7};
     int* p=n;
     for(i=0; i<3; i++)
     {
          this->MessageBox(Sys::Convert::ToString(*(p+i)), L"n", MB_OK);
          Sys::Format(texto, L"%d", *(p+i));
          this->MessageBox(texto, L"Hola", MB_OK);
     }
}
n
5

Hola
5

n
6

Hola
6

n
7

Hola
7


Constant Strings

When the compiler finds a constant text string, the compiler stores the string in a table and generates a pointer to the string as shown in the example below. This implies that inside the executable file of the program, all constant strings are included and can be read or modified.
Cuando el compilador encuentra una cadena de texto constante, el compilador almacena la cadena en una tabla y genera un puntero a la cadena como se muestra en el ejemplo de abajo. Esto implica que dentro del archivo ejecutable del programa, todas las cadenas constantes están incluidas y pueden ser leídas o modificadas.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wchar_t * p = NULL;
     p = L"Hello Erica";
     this->MessageBox(p, L"Hola", MB_OK);
}

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home