COMO UTILIZAR CONST CON
     APUNTADORES
O EXISTEN 4 OPCIONES PARA PASAR
    UN APUNTADORA UNA FUNCION
O   UN PAUNTADOR NO CONSTANTE A
    DATOS NO CONSTANTES.
O   UN APUNTADOR CONSTANTE A
    DATOS NO CONSTANTES.
O   UN APUNTADOR NO CONSTANTE A
    DATOS CONSTTANTES.
O   UN APUNTADOR CONSTANTE A
    DATOS COSTANTES.
NIVEL DE ACCESO DE DATOS
O EL NIVEL MAS ALTO DE ACCESO SE CONSIGUE
  MEDIANTE UN APUNTADOR NO CONSTANTE A
  DATOS NO CONSTANTES. EN ESTE CASO, LOS
  DATOS PUEDEN SER MODIFICADOS A TRAVES
  DE UN APUNTADOR DESREFERENCIADO, Y EL
  APUNTADOR PUEDE SER MODIFICADO PARA
  SEÑALAR A OTROS ELEMENTOS DE DATOS.
O UN APUNTADOR NO CONSTANTE A DATOS NO
  CONSTANTES NO INCLUYE LA FUNCION CONST.
  TAL APUNTADOR PUDIERA SER UTILIZADO PARA
  RECIBIR UNA CADENA COMO ARGUMENTOA
  UNA FUNCION QUE UTILIZA ARITMETICA DE
  APUNTADOR      PARA     PROCESAR       Y
  POSIBLEMENTE PARA MODIFICARLA CADA
  CARÁCTER DENTRO DE LA CADENA.
O UN APUNTADOR NO CONSTANTE A DATOS
  CONSTANTES ES UN APUNTADOR QUE PUEDE
  SER MODIFICADO PARA APUNTAR A CUALQUIER
  ELEMENTO     DE    DATOS     DEL    TIPO
  APROPIADO,   ERO    NO    PUEDEN     SER
  MODIFICADOS LOS DATOS HACIA LOS CUALES
  APUNTA.
EJEMPLO DE APUNTADOR NO CONSTANTE A
                DATOS NO CONSTANTES
#include "stdio.h"
#include "conio.h"
#include "iostream"
using namespace std;                             EN   ESTE   EJEMPLO     LA    FUNCION
void convertir(char *);
                                                 CONVERTIR,    DECLARA     COMO     SU
main()
{                                                ARGUMENTO     UN    APUNTADOR      NO
 system ("cls");                                 CONSTANTE       A      DATOS       NO
 char string[]="caracteres";                     CONSTANES, LLAMADO s (CHAR *S). LA
 cout<<"la cadena antes de la conversion es:n"; FUNCION PROCESA LA CADENA S, SE
 cout<<string;                                   CONVIERTE A SU LETRA EN MAYUSCULA
 convertir(string);
                                                 CORRESPONDIENTE, A a Z, UTILIZANDO UN
 cout<<"nla cadena despues de la conversion es:n";
 cout<<string;                                   CALCULO BASADO EN SU CODIGO ASCII, DE
 system("pause");                                LO CONTRARIO ES PASADO POR ALTO, Y ES
                                         PROCESADO EL SIGUIENTE CARÁCTER EN
return 0;                                LA CADENA. NOTE QUE TODAS LAS ETRAS
}                                        MAYUSCULAS EN EL CONJUNTO DE
                                         CARACTERES ASCII TIENEN VALORES
void convertir(char *s)
{                                        ENTEROS QUE SON EQUIVALENTES EN
while (*s !='0')                        VALORES    ASCII  A   SUS    LETRAS
{                                        CORRESPONDIENTE    EN   MINUSCULAS
 if (*s >='a' && *s<='z')                MENOS 32
 {
  *s -=32;
  ++s;
  }
EJEMPLO DE APUNTADOR NO CONSTANTE A
                 DATOS CONSTANTES
#include "stdio.h"
#include "conio.h"                                  EN     ESTE   EJEMPLO    LA   FUNCION
#include "iostream"                                 IMPRIMIRCARAC,      DECLARA       LOS
using namespace std;                                PARAMETROS DEL TIPO CONST CHAR * . LA
void imprimircarac(const char *);
                                                    DECLARACION SE LEE DE DERECHA A
main()                                              IZQUIERDA DE LA FORMA “S” ES UN
{                                                   APUNTADOR A UNA CONSTANTE DE
 system("cls");                                     CARÁCTER. EL CUERPO DE LA FUNCION
 char string[]="imprimir caracter por caracter la cadena";
                                                    UTILIZA UNA ESTRUCTURA FOR, PARA
 imprimircarac(string);                             EXTRAER     CADA  CARÁCTER    DE   LA
 cout<<("n");
 system("pause");
                                                    CADENA, HASTA QUE SE ENCUENTRE EL
 return 0;                                          CARÁCTER NULL. DESPUES DE HABER
 }                                                  IMPRESO CADA CARÁCTER, EL APUNTADOR
                                                    S ES INCREMENTADO, PARA QUE APUNTE AL
 void imprimircarac(const char *s)                  SIGUIENTE CARÁCTER DENTRO DE LA
 {                                                  CADENA.
for ( ;*s!='0'; s++)
{
 cout<<*s;
 }
}
EJEMPLO DE APUNTADOR CONSTANTE A
                  DATOS NO CONSTANTES
                          EN ESTE EJEMPLO SE INTENTA MODIFICAR
#include "stdio.h"        UN     APUNTADOR       CONSTANTE.    EL
#include "conio.h"        APUNTADOR APUNTA SE DECLARA SER DEL
#include "iostream"       TIPO INT * CONST. LA DECLARACION SE LEE
                          DE DERECHA A IZQUIERDA COMO APUNTA
using namespace std;
                          ES UN APUNTADOR CONSTANTE A UN
main()                    ENTERO. EL APUNTADOR SE INICIALIZA CON
{                         LA DIRECCION DE LA VARIABLE ENTERA X.
    system ("cls");       EL PROGRAMA INTENTA ASIGNAR LA
                          DIRECCION DE Y A APUNTA, PERO SE
int x, y;                 GENERA UN MENSAJE DE ERROR. YA QUE
int * const apunta =&x;   LOS APUNTADORES CONSTANTES A DATOS
apunta = &y;              CONSTANTES. SIEMPRE PUNTA A LA MISMA
                          DIRECCION D MEMORIA, Y LOS DATOS NO
 system("pause");
                          PIEDEN SER MODIFICADOS.
 return 0;
 }
EJEMPLO DE APUNTADOR CONSTANTE A
                 DATOS CONSTANTES
                                EN ESTE EJEMPLO DECLARA A LA VARIABLE
#include "stdio.h"              DE APUNTADOR APUNTA SER DEL TIPO
#include "conio.h"              CONST INT * CONST. ESTA DECLARACION SE
                                LEE DE DERECHA A IZQUIERDA COMO
#include "iostream"             APUNTA ES UN APUNTADOR CONSTANTE A
using namespace std;            UN ENTERO CONSTANTE. GENERA ERROR
main()                          YA QUE LOS APUNTADORES CONSTANTES A
{                               DATOS CONSTANTES. SIEMPRE PUNTA A LA
                                MISMA DIRECCION DE MEMORIA,       LOS
   system ("cls");              DATOS Y DIRECCION NO PIEDEN SER
                                MODIFICADOS.
int x=5, y;
const int * const apunta =&x;
*apunta=7;
apunta = &y;
 system("pause");
 return 0;
 }

Apuntes apuntadores 2 a

  • 1.
    COMO UTILIZAR CONSTCON APUNTADORES O EXISTEN 4 OPCIONES PARA PASAR UN APUNTADORA UNA FUNCION O UN PAUNTADOR NO CONSTANTE A DATOS NO CONSTANTES. O UN APUNTADOR CONSTANTE A DATOS NO CONSTANTES. O UN APUNTADOR NO CONSTANTE A DATOS CONSTTANTES. O UN APUNTADOR CONSTANTE A DATOS COSTANTES.
  • 2.
    NIVEL DE ACCESODE DATOS O EL NIVEL MAS ALTO DE ACCESO SE CONSIGUE MEDIANTE UN APUNTADOR NO CONSTANTE A DATOS NO CONSTANTES. EN ESTE CASO, LOS DATOS PUEDEN SER MODIFICADOS A TRAVES DE UN APUNTADOR DESREFERENCIADO, Y EL APUNTADOR PUEDE SER MODIFICADO PARA SEÑALAR A OTROS ELEMENTOS DE DATOS. O UN APUNTADOR NO CONSTANTE A DATOS NO CONSTANTES NO INCLUYE LA FUNCION CONST. TAL APUNTADOR PUDIERA SER UTILIZADO PARA RECIBIR UNA CADENA COMO ARGUMENTOA UNA FUNCION QUE UTILIZA ARITMETICA DE APUNTADOR PARA PROCESAR Y POSIBLEMENTE PARA MODIFICARLA CADA CARÁCTER DENTRO DE LA CADENA. O UN APUNTADOR NO CONSTANTE A DATOS CONSTANTES ES UN APUNTADOR QUE PUEDE SER MODIFICADO PARA APUNTAR A CUALQUIER ELEMENTO DE DATOS DEL TIPO APROPIADO, ERO NO PUEDEN SER MODIFICADOS LOS DATOS HACIA LOS CUALES APUNTA.
  • 3.
    EJEMPLO DE APUNTADORNO CONSTANTE A DATOS NO CONSTANTES #include "stdio.h" #include "conio.h" #include "iostream" using namespace std; EN ESTE EJEMPLO LA FUNCION void convertir(char *); CONVERTIR, DECLARA COMO SU main() { ARGUMENTO UN APUNTADOR NO system ("cls"); CONSTANTE A DATOS NO char string[]="caracteres"; CONSTANES, LLAMADO s (CHAR *S). LA cout<<"la cadena antes de la conversion es:n"; FUNCION PROCESA LA CADENA S, SE cout<<string; CONVIERTE A SU LETRA EN MAYUSCULA convertir(string); CORRESPONDIENTE, A a Z, UTILIZANDO UN cout<<"nla cadena despues de la conversion es:n"; cout<<string; CALCULO BASADO EN SU CODIGO ASCII, DE system("pause"); LO CONTRARIO ES PASADO POR ALTO, Y ES PROCESADO EL SIGUIENTE CARÁCTER EN return 0; LA CADENA. NOTE QUE TODAS LAS ETRAS } MAYUSCULAS EN EL CONJUNTO DE CARACTERES ASCII TIENEN VALORES void convertir(char *s) { ENTEROS QUE SON EQUIVALENTES EN while (*s !='0') VALORES ASCII A SUS LETRAS { CORRESPONDIENTE EN MINUSCULAS if (*s >='a' && *s<='z') MENOS 32 { *s -=32; ++s; }
  • 4.
    EJEMPLO DE APUNTADORNO CONSTANTE A DATOS CONSTANTES #include "stdio.h" #include "conio.h" EN ESTE EJEMPLO LA FUNCION #include "iostream" IMPRIMIRCARAC, DECLARA LOS using namespace std; PARAMETROS DEL TIPO CONST CHAR * . LA void imprimircarac(const char *); DECLARACION SE LEE DE DERECHA A main() IZQUIERDA DE LA FORMA “S” ES UN { APUNTADOR A UNA CONSTANTE DE system("cls"); CARÁCTER. EL CUERPO DE LA FUNCION char string[]="imprimir caracter por caracter la cadena"; UTILIZA UNA ESTRUCTURA FOR, PARA imprimircarac(string); EXTRAER CADA CARÁCTER DE LA cout<<("n"); system("pause"); CADENA, HASTA QUE SE ENCUENTRE EL return 0; CARÁCTER NULL. DESPUES DE HABER } IMPRESO CADA CARÁCTER, EL APUNTADOR S ES INCREMENTADO, PARA QUE APUNTE AL void imprimircarac(const char *s) SIGUIENTE CARÁCTER DENTRO DE LA { CADENA. for ( ;*s!='0'; s++) { cout<<*s; } }
  • 5.
    EJEMPLO DE APUNTADORCONSTANTE A DATOS NO CONSTANTES EN ESTE EJEMPLO SE INTENTA MODIFICAR #include "stdio.h" UN APUNTADOR CONSTANTE. EL #include "conio.h" APUNTADOR APUNTA SE DECLARA SER DEL #include "iostream" TIPO INT * CONST. LA DECLARACION SE LEE DE DERECHA A IZQUIERDA COMO APUNTA using namespace std; ES UN APUNTADOR CONSTANTE A UN main() ENTERO. EL APUNTADOR SE INICIALIZA CON { LA DIRECCION DE LA VARIABLE ENTERA X. system ("cls"); EL PROGRAMA INTENTA ASIGNAR LA DIRECCION DE Y A APUNTA, PERO SE int x, y; GENERA UN MENSAJE DE ERROR. YA QUE int * const apunta =&x; LOS APUNTADORES CONSTANTES A DATOS apunta = &y; CONSTANTES. SIEMPRE PUNTA A LA MISMA DIRECCION D MEMORIA, Y LOS DATOS NO system("pause"); PIEDEN SER MODIFICADOS. return 0; }
  • 6.
    EJEMPLO DE APUNTADORCONSTANTE A DATOS CONSTANTES EN ESTE EJEMPLO DECLARA A LA VARIABLE #include "stdio.h" DE APUNTADOR APUNTA SER DEL TIPO #include "conio.h" CONST INT * CONST. ESTA DECLARACION SE LEE DE DERECHA A IZQUIERDA COMO #include "iostream" APUNTA ES UN APUNTADOR CONSTANTE A using namespace std; UN ENTERO CONSTANTE. GENERA ERROR main() YA QUE LOS APUNTADORES CONSTANTES A { DATOS CONSTANTES. SIEMPRE PUNTA A LA MISMA DIRECCION DE MEMORIA, LOS system ("cls"); DATOS Y DIRECCION NO PIEDEN SER MODIFICADOS. int x=5, y; const int * const apunta =&x; *apunta=7; apunta = &y; system("pause"); return 0; }