Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: david_BS en 3 Abril 2012, 03:26 am



Título: manipulación de punteros (ejemplo con float)
Publicado por: david_BS en 3 Abril 2012, 03:26 am

Hola, dejo un código en el que utilizo algunas de las manipulaciones diferentes de punteros, para este ejemplo uso el tipo 'float'. Esto puede ayudar a ciertos iniciados a entender el manejo de punteros, al menos para tipos de datos como int o float. También se remarca la diferencia entre un vector de punteros y un puntero a vector.

Código:
//////////////////////////////////////////////////////////////////

//
// UTN FRGP
// 2012
// david_BS
// EMAIL: david_bs@live.com
//

//////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>


int main(){

float vec1[5]={ 0.5f, 0.2f, 0.22f, 0.01f, 0.0f };
float vec2[5]={ 0.5f, 0.2f, 0.22f, 0.01f, 0.0f };
float vec3[5]={ 0.5f, 0.2f, 0.22f, 0.01f, 0.0f };
float (*vec4)[5];// puntero a vector de floats
float (*vec5)[5];// puntero a vector de floats
float (*vec6)[5];// puntero a vector de floats
vec4=&vec1;
vec5=&vec2;
vec6=&vec3;

float* pf1[3]; //vector de punteros a vectores de float
pf1[0]=&vec1[0];
pf1[1]=&vec2[0];
pf1[2]=&vec3[0];

float* pf2[3]; //vector de punteros a vectores de float
pf2[0]=*vec4;
pf2[1]=*vec5;
pf2[2]=*vec6;

float** ppf1;
ppf1 = (float**)&pf1;//se le asigna la direccion de un vector de punteros a vectores de float

float** ppf2;
ppf2 = (float**)&pf2;//se le asigna la direccion de un vector de punteros a vectores de float

printf("vec1: %x\n",vec1);
printf("vec4: %x\n",vec4);
printf("pf1: %x\n",pf1);
printf("pf1[0]: %x\n",pf1[0]);
printf("ppf1: %x\n",ppf1);
printf("*ppf1: %x\n",*ppf1);

printf("vec3: %x\n",vec3);
printf("ppf1[2]: %x\n",ppf1[2]);

printf("*ppf1[0]: %f\n",*ppf1[0]);
printf("*ppf1[1]: %f\n",*ppf1[1]);
printf("*ppf1[2]: %f\n",*ppf1[2]);
printf("*(ppf1[0]+1): %f\n",*(ppf1[0]+1));
printf("*(ppf1[1]+1): %f\n",*(ppf1[1]+1));
printf("*(ppf1[2]+1): %f\n",*(ppf1[2]+1));


system("pause");
return 0;
}

Proyecto en MSVC++ 6.0 (http://www.mediafire.com/?d1aol1d023bd2u0)