Está en la página 1de 7

Apuntadores

Ejemplo 1
a)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=0;
a=5;
a=a+2;;
printf("el valor de a es %d \n",a);
system("PAUSE");
return 0;
}

b)
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int a=0,*ip=&a;
*ip=5;
*ip=*ip*2;
printf("el valor de a es %d \n",*ip);
system("PAUSE");
return 0;
}



Ejemplo 2


#include<stdio.h>
void main(){

int arr[5]={5,7,11,13,17};
int *ip;
int i;
ip=arr;
printf("El valor de ip es %X\n",ip);
for(i=0;i<5;i++){
printf("El valor de arr[%d] es: %d\n",i,arr[i]);
}
for(i=0;i<5;i++){
printf("El valor de arr[%d] usando ip es: %d, dir:%X\n",i,*(ip+i),(ip+i));
}
for(i=0;i<5;i++){
printf("El valor de arr[%d] usando solo arr es: %d, dir:%X\n",i,*(arr+i),(arr+i));
system("PAUSE");
return 0;
}
}

Ejemplo 3
#include<stdio.h>
#include<stdlib.h>
// Definicin de un nuevo tipo de dato: polinom
typedef struct{
int grado;
int *coef;
}polinom;
// Funcin de lectura de polinomios
polinom LeePolinom(){
polinom pol;
int i = 0;
pol.grado=0;
pol.coef=NULL;
printf("Indica el grado del polinomio: ");
scanf("%d",&pol.grado);
/* Asignacin de memoria para el vector de coeficientes, segn
el grado del polinomio */
pol.coef = (int *)malloc((pol.grado + 1) * sizeof(int));
if(pol.coef != NULL){
//Lectura de coeficientes, de mayor a menor grado
for(i=pol.grado; i>=0;i--){
printf("Dame el valor del coeficiente %d: ",i);
scanf("%d",&pol.coef[i]);
}
}
return pol;
}
// Funcin que suma A y B
polinom SumaPolinom(polinom polA, polinom polB){
int gradoMAX, polMAX;
int i=0;
polinom polRes = {0,NULL};
/* Condicin que indica el grado que tendr polRes */
if(polA.grado>=polB.grado){
gradoMAX = polA.grado;
polMAX = 1;
}
else{
gradoMAX = polB.grado;
polMAX = 2;
}
polRes.grado = gradoMAX;
//Asignacin de memoria para polRes
polRes.coef=(int *)malloc((gradoMAX + 1) * sizeof(int));
//Si A fue de mayor grado
if(polMAX == 1){
/*Ciclo de copiado de los primeros coeficientes de A en
Res */
for(i=gradoMAX;i>polB.grado;i--){
polRes.coef[i]=polA.coef[i];
}
//Suma de coeficientes restantes
for(i=polB.grado;i>=0;i--){
polRes.coef[i]=polA.coef[i]+polB.coef[i];
}
}
//Si B fue de mayor grado
else{
/* Ciclo de copiado de los primeros coeficientes de B en
Res */
for(i=gradoMAX;i>polA.grado;i--){
polRes.coef[i]=polB.coef[i];
}
//Suma de coeficientes restantes
for(i=polA.grado;i>=0;i--){
polRes.coef[i]=polB.coef[i]+polA.coef[i];
}
}
return polRes;
}
// Funcin Principal
void main(){
polinom polA, polB, polRes;
int i=0;
polA = LeePolinom();
if(polA.coef !=NULL){
polB = LeePolinom();
if(polB.coef != NULL){
polRes = SumaPolinom(polA,polB);
if(polRes.coef != NULL){
for(i=polRes.grado;i>=0;i--){
printf("+(%d)x^%d ",polRes.coef[i],i);
}
}
}
}
//Se libera la memoria asignada a los polinomios
free(polA.coef);
free(polB.coef);
free(polRes.coef);
system("PAUSE");
return 0;
}

También podría gustarte