Napisałem taki programik, żeby sprawdzić, czy dobrze to rozumiem.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int tabA[5]={3000,2,3,4,5};
void * ptabA = &tabA;
char * tab = malloc(5*sizeof(tabA));
for (int i=0; i<20; i++)
{
tab[i]=((char*)ptabA)[i];
}
for(int i=0; i<20; i++)
{
printf("%d", tab[i]);
printf("\n");
}
}
1. rezerwuję tablice typu char dla 5 zmiennych typu int.(5*4=20 bajtów).
2. tworzę wskaźnik wskazujący na pierwyszy element tablicy int,
3. przypisuję bajt po bajcie zawartość tabA do tab.
jeśli dobrze zrozumiałem to w pamięci zarezerwowałem 20 bajtów
jeśli chodzi o iterację to na intach tabA[0], tabA[1], tabA[2], tabA[3], tabA[4]
|1|0|0|0|2|0|0|0|3|0|0|0|4|0|0|0|5|0|0|0|
jeśli chodzi o iterację to na charach tab[0], tab[1], tab[2], tab[3], tab[4]... tab[20]
|1|0|0|0|2|0|0|0|3|0|0|0|4|0|0|0|5|0|0|0|
mam jednak jeszcze pytanie jak to jest, że w tablicy typu char możliwe jest zapisanie liczb wiekszych niż 255, bo jesli próbuję to zrobić dla zmiennej pojawiają mi się ujemne liczby.