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