Avatar billede svnne Nybegynder
08. februar 2004 - 10:12 Der er 35 kommentarer og
2 løsninger

records = structs i C-programmering

jeg har et forståelses spørgsmål...

Er records og structs en og samme ting??
Avatar billede arne_v Ekspert
08. februar 2004 - 10:23 #1
Ja.

Pascal record = C struct
Avatar billede svnne Nybegynder
08. februar 2004 - 10:25 #2
og så lige et tillægs spørgsmål - jeg har på nettet fundet noget tekst hvor der står at man kan lave en sammenkædning mellem arrys og records/structs - hvorfor det og hvordan??
Avatar billede arne_v Ekspert
08. februar 2004 - 10:31 #3
Du kan lave et array af struct og du kan lave en struct af array.

struct x
{
  double a;
  int b;
  int c;
};

struct x test[100];

og:

struct x
{
  double a;
  int b[100];
};

monstro ikke at det er det som de tænker på.
Avatar billede svnne Nybegynder
08. februar 2004 - 10:37 #4
her er noget kode jeg har fundet på nettet... er det en sammenkædning af arrays og structures??

    ned_id = f.tur[f.cur_index]->spis;
  else
    ned_id = f.tur[f.cur_index]->stop_spis

Længere oppe i programmet er der lavet en funktion hvor spis og stop_spis er defineret som structs... er det så en sammenkædning af arrays og records
Avatar billede svnne Nybegynder
08. februar 2004 - 10:39 #5
ok.. men hvorfor er det smart at lave en sammenkædning??
Avatar billede svnne Nybegynder
08. februar 2004 - 10:48 #6
Jeg har fundet et spørgsmål herinde på eksperten, som også har noget structs og noget arrays i sammen sætning.... ville det evt. være en sammenkædning... hverken det jeg har fundet på nettet og her på eksperten ligner jo det som du har skrevet...
Avatar billede svnne Nybegynder
08. februar 2004 - 10:50 #7
her er linket til spørgsmålet:

http://www.eksperten.dk/spm/461710
Avatar billede arne_v Ekspert
08. februar 2004 - 10:55 #8
f er en variabel af type en eller anden struct som indeholder et felt tur
tur er et array af pointer til en anden struct

så ja - det er sådan noget.
Avatar billede arne_v Ekspert
08. februar 2004 - 10:57 #9
array af struct er ofte en god data struktur - det svarer jo også til
en database tabel (array element = rækker i tabel, felter i struct = søjler
i tabel).
Avatar billede arne_v Ekspert
08. februar 2004 - 10:57 #10
struct indeholdende et array er nødvendigt når noget kan indeholde flere en
en af noget andet.
Avatar billede svnne Nybegynder
08. februar 2004 - 12:17 #11
ok - tak for hjælpen..

Lige et andet spørgsmål...

I det andet spørgsmål jeg har oprettet - er der en eller "web-the..." som spørg om noget ekstra i mit spørgsmål... han spørg vist om noget med processer og tråde... hvad er det for noget og hvad er, som han spørg, smartest at vælge... jeg sidder med det der filosof-eksempel ok kan ikke lige se hvad han mener...

kan du ikke forklare mig lidt om forskellen og hvorfor det er godt at bruge processer og hvorfor det er godt at bruge tråde... jeg kan slet ikke følge med i den forklaring der er kommet på mit andet spørgsmål.. og har set dit arkiv igennem og du virker meget pædagoisk.
Avatar billede svnne Nybegynder
08. februar 2004 - 12:25 #12
Du skriver dette:
f er en variabel af type en eller anden struct som indeholder et felt tur
tur er et array af pointer til en anden struct

så ja - det er sådan noget.

er det så et array at struct eller struct indeholdende array du mener....
Avatar billede arne_v Ekspert
08. februar 2004 - 12:28 #13
process = selvstændigt task/program som kører

Kan ses i windows med CTRL-ALT-DEL + TaskManager + processes.

Kan ses i Linux med f.eks.:
  ps aux

tråd = en logisk opdeling af eksekveringen indenfor en process

Mangle applikationer har kun en tråd. Men nogle applikationer kan man
hensigtsmæssigt opdele i flere tråde. Hvilket gør programmerne i stand
til at håndtere flere ting samtidigt på en elegant måde.

Det er typisk server programemr som bruger flere tråde. Typisk en tråd
per client.
Avatar billede arne_v Ekspert
08. februar 2004 - 12:29 #14
Det er vist iøvrigt rigtigt at tråde ikker hurtigere end processer på
Linux, men det kan jo ligeså godt skyldes at tråde er dårligt implementeret
end at processer er godt implementeret.
Avatar billede arne_v Ekspert
08. februar 2004 - 12:30 #15
det er en struct som indeholder et array af pointere til struct
Avatar billede arne_v Ekspert
08. februar 2004 - 12:31 #16
man kan neste arrays og structs uendeligt dybt
Avatar billede svnne Nybegynder
08. februar 2004 - 12:35 #17
ok - det med tråde og processer fatter jeg ikke en skid, men skidt med det... bare lige en ting... de kan bruges til det samme???

Mht. struct indeholdende array..så er det ikke som du skriver:

array af struct er ofte en god data struktur - det svarer jo også til
en database tabel (array element = rækker i tabel, felter i struct = søjler
i tabel).
Avatar billede svnne Nybegynder
08. februar 2004 - 12:41 #18
altså struct indeholdende array kan det også opfattes som en database tabel.....??
Avatar billede arne_v Ekspert
08. februar 2004 - 12:42 #19
Ja - det man løser med forking (flere processer) i C på Linux vil man
lave med threading (flere tråde) i C++ på Windows eller Java.
Avatar billede arne_v Ekspert
08. februar 2004 - 12:44 #20
nej - array af struct og struct af array er ikke det samme - og umiddelbart vil
jeg finde array af struct mest nyttig
Avatar billede svnne Nybegynder
08. februar 2004 - 12:51 #21
ok, tak for hjælpen....
Avatar billede svnne Nybegynder
08. februar 2004 - 12:52 #22
hvorfor kan jeg ikke acceptere dit svar....??
Avatar billede arne_v Ekspert
08. februar 2004 - 12:54 #23
Jeg prøver at svare igen.
Avatar billede svnne Nybegynder
08. februar 2004 - 12:58 #24
nu har jeg lige læst det hele igennem - og den her sætning forstår jeg ikke helt

struct indeholdende et array er nødvendigt når noget kan indeholde flere en
en af noget andet.
Avatar billede svnne Nybegynder
08. februar 2004 - 13:02 #25
jeg bliver sgu ved her... nu kan jeg se du skriver det man løser med forking i C.... hvad er det f.eks. man vælger at løse med processer?? og hvad er forking??
Avatar billede arne_v Ekspert
08. februar 2004 - 13:05 #26
Forestil dig f.eks. en struct som:

struct hold
{
  char navn[20];
  struct spiller medlem[11];
};

et hold består af 11 spillere altså må structen indeholde et array.
Avatar billede arne_v Ekspert
08. februar 2004 - 13:07 #27
Det man vil løse med forkede processer eller tråde er det at et program
skal lave flere ting samtidigt. Et server program skal måske snakke
med 100 klient programmer samtidigt.
Avatar billede arne_v Ekspert
08. februar 2004 - 13:08 #28
Forking er en speciel Unix/Linux måde at starte en process på, om egner sig
til den slags.
Avatar billede svnne Nybegynder
08. februar 2004 - 13:10 #29
ok, det var et godt eksempel..
Avatar billede svnne Nybegynder
08. februar 2004 - 13:12 #30
ok, i henhold til de spisende filosoffer... er det så et program, der oplagt som kan laves med forkede processer...
Avatar billede svnne Nybegynder
08. februar 2004 - 13:19 #31
Jeg kan bare stadig ikke se svaret på det som ham web-the... stiller hvorfor vil han vide hvad der er smartest at vælge hvornår... hvornår ER det smartest at vælge det ene fremfor det andet...

HVis nu vi forsætter med det fodboldhold.. så hvis nu jeg vil simulere at de alle elleve løber ud på banen.. så er banen vel en ressource ikke og spillerne er så en proces - er det korrekt forstået?? Men ville det så være smartere at vælge tråde?
Avatar billede svnne Nybegynder
08. februar 2004 - 13:25 #32
og ville det ikke ved proces være forkede proces, da der jo er flere ting der skal ske samtidigt
Avatar billede arne_v Ekspert
08. februar 2004 - 13:27 #33
Valget mellem at lave tråde eller at forke processer afhænger mere af:
  operativ system
  programmerings sprog
  programmørens erfaring
end af problem stillingen.

ikke Unix operativ system (i denne sammenhæng inkluderer Unix altså Linux) => tråde
(fordi man ikke  kan forke processer med samme semantik som Unix)

Java => tråde (fordi Java bruger tråde ikke forking)

med C/C++ på Unix/Linux så træffer man et valg - gamle Unix programmører
vil ofte vælge forking fordi det kender de
Avatar billede arne_v Ekspert
08. februar 2004 - 13:28 #34
Hvis du vil lave en simulation af en fodbold kamp, så var det en mulighed at
lave en tråd eller forke en process per spiller.
Avatar billede svnne Nybegynder
08. februar 2004 - 13:33 #35
ok - det var forståeligt..
tusind tak
Avatar billede svnne Nybegynder
11. februar 2004 - 11:28 #36
hey, arne

lige for at få uddybet fotståelsen omkring semafore så ville jeg køre lidt videre i det fodbold eks.

hvis vi nu siger at hvert enkelt spiller skal løbe gennem et ex. antal ressource før de kommer til deres plads på banen, de skal alle i gennem de samme ressourcer, men at der kun kan komme en spiller adgangen gennem hver ressource  og jeg så ved hjælp af semafore vil tjekke om hver enkelt ressource er ledigt... f'ør en spiller placere sig - hvordan villle det se ud??
Avatar billede arne_v Ekspert
11. februar 2004 - 12:17 #37
Tja - det lyder som noget man kunne bruge semafor til.

Men jeg har aldrig prøvet at kode den slags.
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