TIPOS DE DATOS
PARCIAL III
Punteros
Un puntero es una variable que hace referencia a una dirección de memoriaSintaxis: Tipo_Dato *nombre_variable_puntero;Ejemplo: int *p; Asignación de Dirección nombre_puntero=&variable;
Punteros
El carácter & delante de una variable indica que lo se está accediendo es a la dirección de memoria de dicha variable.
Ejemplo: int *p; p=0; /* p posee la dirección NULL ó 0*/ p=NULL; /* p posee la dirección NULL ó 0*/ p=&i; /*p apunta hacia i ó conteniendo
la dirección de i */ p=(int )1501; /*dirección absoluta de
memoria */
Inicialización
Sintaxis:
tipo_dato
*nombre_puntero=&variable;
Ejemplo:
int i=7,*p=&i;
#include <stdio.h>void funcion(int *pi){ *pi = 0; //se asigna 0 a lo apuntado por pi}int main(){ int n=1; //declara un entero printf("%d\n",n); //imprime su valor funcion(&n); //invoca a la funcion con la referencia al entero printf("%d\n",n); //imprime el nuevo valor return 0;}
#include <stdio.h>
int main(){ int a=13; int *pa;
pa = &a;
printf("%u\n",&a); printf("%u\n",pa);
printf("%d\n",a); *pa = 55; printf("%d\n",a); printf("%d\n",*pa);
return 0;}
#include <stdio.h>void division_entera(int x, int y, int *cuoc, int *resto){ *cuoc = x/y; *resto = x - y*(*cuoc); }int main(){ int a,b; //variables de entrada int c,r; //variables de salida
a = 5; //se define el valor de las entradas b = 3; division_entera( a, b, &c, &r ); //se invoca la función con 2 parametros //por copia y 2 por referencia //Aqui c y r ya cambiaron de valor printf("%d dividido %d da %d y sobran %d\n",a,b,c,r);
return 0;}
#include <stdio.h>
int main(){ int a[10]; printf("&a[0]=%u\n",&a[0]); printf("&a[1]=%u\n",&a[1]);
printf("a=%u\n",a);
return 0;}
#include <stdio.h>#define TAM 10void imprimir(int *a,int n ){ int i; for(i=0; i<n; i++) printf("%d, ",a[i]); printf("\n");}int main(){ int arreglo[TAM]; int i; for(i=0; i<TAM;i++){ arreglo[i]=i+1; } imprimir(arreglo, TAM); for(i=0; i<TAM; i++){ *(arreglo+i)=0; } imprimir(arreglo, TAM); return 0;}
#include <stdio.h>#define TAM 10char* saluda(char s[TAM] ){ s[0]='h'; s[1]='o'; s[2]='l'; s[3]='a'; s[4]='\0';
return s;}int main(){ char str[TAM]; char *str2;
str2 = saluda(str);
printf("%s",str2);
return 0;}
#include <stdio.h>#include <stdlib.h>
int main(){ int *pi; pi = NULL; //indica que pi es un puntero que aun //no apunta a nada valido *pi = 1234;
return 0;}
#include <stdio.h>
int main(){ int a[3];
printf("sizeof(int)=%d\n", sizeof(int) ); printf("sizeof(char)=%d\n", sizeof(char) ); printf("sizeof(float)=%d\n", sizeof(float) ); printf("sizeof(double)=%d\n", sizeof(double) ); printf("sizeof(a)=%d\n", sizeof(a) ); printf("tamano(a)=%d\n", sizeof(a)/sizeof(int) );
return 0;}