Witam
W szkole jako polecenie dostałem napisać funkcję,która tworzy tablice o zadanym rozmiarze i wyświetla ją.Próbowałem to zrobić,lecz program uruchomiony leci w nieskończoność i trzeba zamknąć wiersz poleceń.Potrafi mnie ktoś nakierować i powiedzieć co robie źle?
0
0
Zamieszczam tutaj funkcję bez fragmentu zwalniania pamięci,bo program do tego nawet nie dochodzi
void CreateTab(int size)
{
int i,y;
int *tab;
tab = (int*)malloc(size * sizeof(int));
i = tab;//początek tablicy
y = tab + size*sizeof(int);//koniec tablicy
for(tab;tab<(y);tab = tab+sizeof(int))
{
tab = rand();
printf("%d \n",tab);
}
}
2
A nie możesz od tak po prostu skorzystać z indeksów jak człowiek? Tym bardziej, że na wskaźnikach sobie nie radzisz za bardzo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
size_t count = 15, i = 0;
int *array = malloc(count * sizeof(int));
for(; i < count; ++i)
{
array[i] = count * i;
printf("%d\n",array[i]);
}
free(array);
return 0;
}
Na wskaźnikach byłoby tak:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
size_t count = 5;
int *array = malloc(count * sizeof(int));
int *iterator = array;
for(;iterator != array + count; ++iterator)
{
*iterator = rand() % 100;
printf("%d\n",*iterator);
}
free(array);
return 0;
}
2
Zamień:
for(tab;tab<(y);tab = tab+sizeof(int))
{
tab = rand();
printf("%d \n",tab);
}
na:
for(i = 0; i < size; i++)
{
y = tab[i];
printf("%d \n", y);
}