Hi, I'm looking for dinamically declaration of a array of pointers. With some investigation, I now that pointers are a 16 bit variables.
sizeof(int*);
I make a simple example code. I can't restore the value of the variable.
/*
Code for testing using an array of pointers.
The array is generated by malloc.
*/
int* f; // The pointer of the array of pointer
int var1 = 124; // Variables for testing
int var2 = 634;
int var3 = 234;
int var4 = 958;
int var5 = 858;
void setup() {
Serial.begin(9600); // Serial comunication for debuging
f = (int *) malloc(5 * sizeof(int*)); // malloc for generating the new memory reservation for the list of 5 items
f[0] = (uint16_t)&var1; // filling the list of pointers from var's pointers
f[1] = (uint16_t)&var2;
f[2] = (uint16_t)&var3;
f[3] = (uint16_t)&var4;
f[4] = (uint16_t)&var5;
Serial.print("*Var1: "); // Printing vars pointers
Serial.print((uint16_t)&var1);
Serial.print("\t*Var2: ");
Serial.print((uint16_t)&var2);
Serial.print("\t*Var3: ");
Serial.print((uint16_t)&var3);
Serial.print("\t*Var4: ");
Serial.print((uint16_t)&var4);
Serial.print("\t*Var5: ");
Serial.println((uint16_t)&var5);
Serial.print("f[0]: "); // Printing the array contents
Serial.print(f[0]); // Value: 608, memory direction
Serial.print("\tf[1]: ");
Serial.print(f[1]);
Serial.print("\tf[2]: ");
Serial.print(f[2]);
Serial.print("\tf[3]: ");
Serial.print(f[3]);
Serial.print("\tf[4u: ");
Serial.println(f[4]);
Serial.print ("Var1: ");
Serial.println (var1); // Still being 124
Serial.print("f[0]: "); // Printing the array contents of the original variables...
// Serial.print(*(f[0])); // Not compile: error: invalid type argument of unary ‘*’
// Serial.print(*f[0]); // Not compile: error: invalid type argument of unary ‘*’
// Serial.print(((f)[0])); // Compile, but value is 608
// Serial.print(*(&f[0])); // Compile, but value is 608
}
void loop() {
}
I can't understand so much how pointers is working.
Can any body help me? A little help to start understanding what is happen?