Wkleje kod i wytłumacze w czym rzecz, bedzie latwiej.
#include <stdio.h>
#include <stdlib.h>
void menu(void);
void wypelnij(int *wektor,int n);
void wyswietl(int *wektor,int n);
int main(int argc, char *argv[])
{
int wybor,wybor2,n;
int *wektor;
menu();
do {
printf("\n\nWybor: ");
scanf("%d",&wybor);
switch(wybor)
{
case 1:
{
wypelnij(wektor,n);
wyswietl(wektor,n); /* W TYM WIERSZU PROGRAM SIE SYPIE, przy wywoływaniu tej funkcji*/
};break;
}
} while (wybor!=0);
getche();
return 0;
}
void menu(void)
{
system("cls");
printf("1. Zaalokuj pamiec na wektor.\n");
}
void wypelnij(int *wektor,int n)
{
int i;
system("cls");
printf("Wprowadz rozmiar wektora: ");
scanf("%d",&n);
wektor=(int*)malloc(n*sizeof(int));
if(wektor==NULL)
printf("Pamieci nie zaalokowano.\n");
else
printf("\nWypelniam wektor elementami.\n");
for(i=0;i<n;i++)
{
wektor[i]=rand()%10+1;
}
wyswietl(wektor,n); /* NATOMIAST JESLI UMIESZCZE WYWOLANIE FUNKCJI W TYM MIEJSCU, DZIALA POPRAWNIE.*/
printf("\nENTER - dalej ...");
getche();
menu();
}
void wyswietl(int *wektor,int n)
{
int i;
system("cls");
for(i=0;i<n;i++)
printf("Element nr %d: %d\n",i+1,wektor[i]);
getche();
}
Umieściłem komentarze gdzie co jest nie tak.
Napisze jeszcze, ze przy wywolywaniu funkcji w programie głownym, program sie sypie. Nie wiem dlaczego, a jesli wywołam w funkcji, w ktorej ALOKUJE tablice, to wszystko pieknie działa.
Nie mam pojecia dlaczego tak, jakis przeciek pamieci?
Probowalem przekazywac przez zmienna/refrencje i nic z tego.
Prosze o wskazowke, uzasadnienie dlaczego tak sie dzieje.
Dziekuje, pozdrawiam.