Példa melyben feltöltünk egy 9 elemű tömböt véletlenszerű számokkal, c++, miért fagy be a devc++?
Hol a hiba?
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(int argc, char *argv[])
{
int *a,b[10];
int i;
srand(time(0));
*a=b[1];
for(i=1;i<10;i++,a++)
{
*a=rand()%10;
}
*a=b[1];
for(i=1;i<10;i++,a++)
{
cout<<(*a);
}
system("PAUSE");
return 0;
}
Nem 0-tól kéne indexelni a tömböt? Szerintem az a baj.
Egyébként mit takar az, hogy befagy?
Ha mutatókkal akarsz küzdeni....
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(int argc, char *argv[])
{
int *a, b[9], i;
srand(time(0));
for(i = 0; i < 9; i++)
{
a = &b[i];
*a = rand() % 10;
}
for(i = 0; i < 9; i++) cout<< b[i] << " " ;
system("PAUSE");
return 0;
}
Létrehozol egy int* pointert, amihez soha nem adsz át memóriacímet. Emiatt élből elszáll mikor az 'a' által mutatott értéket akarod változtatni, mivel 'a' nem mutat sehova. Mellesleg 9 hosszú tömbbel akarsz dolgozni, ezért létrehozol egy 10 hosszút.
Amit te akartál, az feltehetőleg ez:
*a = b[1] helyett a = b+1;
Ekkor működik a program, bár a kód attól még mindig elég gány marad.
Egyezzünk ki abban, hogy nem szórakozol a pointerekkel amíg nem tudod hogyan működnek, oké?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!