Avatar billede Slettet bruger
30. november 2005 - 09:29 Der er 8 kommentarer og
1 løsning

C spørgsmål

Hej,

en en funktion i C står der:

int *number;
struct error_handler *data;

senere i samme funktion står der:
number = (int *) arg;
data = (struct error_handler *) arg;

Hvad er det lige de 2 sidste linier gør, for programmet kan godt virke selvom de ikke er med, der kommer dog en warning.
Avatar billede jpk Nybegynder
30. november 2005 - 09:43 #1
number = (int *) arg;

fortæller compileren at den skal betragte arg som en int pointer og sætte number til at pege på den.

Den anden ligeledes...
Avatar billede Slettet bruger
30. november 2005 - 09:48 #2
kan du forklare det på en anden måde, for jeg forstår ikke hvad du mener :(
Avatar billede jpk Nybegynder
30. november 2005 - 10:06 #3
int a = 5; // a er en heltalsvariabel med værdien 5
int* pA = &a; // pA er en pointer til en heltalsvariabel, der peger på a

double* pDoubleA = &a; // pDoubleA er en pointer til en decimaltalsvariabel, der peger på a, det giver dog en warning da a ikke er en decimaltalsvariabel

double* pDoubleA = (double*)&a; // samme som ovenstående, dog uden warning da vi fortæller compileren at det er okay at betragte a som en double.
Avatar billede Slettet bruger
30. november 2005 - 10:42 #4
vil det sige at jeg skal betragte
data = (struct error_handler *) arg
som at arg skal betragtes som en struct af error_handler og samtidigt sætte data lig med dette?

den warning jeg får hvis linien udkommenteres siger at data bliver benyttet uden at være initaliseret.
Avatar billede Slettet bruger
30. november 2005 - 10:44 #5
int *number
her opretter jeg en variabel number som der peges på vha en pointer

data = (struct error_handler *) arg
fortæller bare at data skal betragtes som en struct at error_handler og at data er en pointer til dette.
Avatar billede jpk Nybegynder
30. november 2005 - 10:45 #6
Ja.

Du skriver "for programmet kan godt virke selvom de ikke er med". Det passer dog ikke, hvis data ikke bliver sat, vil programmet ret sikkert gå ned når du prøver at bruge den!
Avatar billede jpk Nybegynder
30. november 2005 - 10:47 #7
int* number opretter ikke en int, men en pointer til en int.
Avatar billede Slettet bruger
30. november 2005 - 11:22 #8
Super... jpk gider du lave et svar :o)

Tak for hjælpen.
Avatar billede jpk Nybegynder
30. november 2005 - 11:24 #9
Velbekomme
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester