Hjelp med C tabeller og pekere

M

m_t_blind

Guest
Når vi har en 1-dimensjon bord, for eksempel,

char m [2]
is a char type pointer to the first element of the table.ok.

navnet på tabellen meter
er en char type pekeren til første elementet i table.ok.
Når vi har en multi-dimensjon bord, f.eks,

char m2 [10] [2]
for this.

Jeg syntes at navnet is't en gyldig peker, og jeg bruker & m [0] [0]
for dette.
(Dette på IAR kompilatoren for MSP)

1.My første spørsmålet er at dette er riktig for generell i C, eller bare apears på spesifikke kompilator?
):

2.And mitt neste spørsmål er (for tabellen m2):
points the m2[0][2]
?

Pekeren * (& m2 [0] [0] 10)
peker på m2 [0] [2]?

Hvis det ikke hvorfor?

 
Hei m_t_blind,
checkout min forklaring:
[2]char m2 [10]
[2]

La oss ta den understrekede delen å være "navnet" i en matrise.Så prepending det røye og legge den [2] har vi et utvalg av 10 tegn.

is itself an array indicating that there are 10 elements each being an array of 2 characters.

Men, er navnet m2 [10]
selv en matrise som viser at det er 10 elementer hvert å være et utvalg av 2 tegn.Derfor har vi et utvalg av 10 arrays av 2 tegn hver.
is wrong.

* (& m2 [0] [0] 10) peker på m2 [0] [2]
er galt.

den peker m2 [5] [0].
actually it takes the address of the first element
.

Dette er fordi, når du sier og m2 [0] [0]
faktisk det tar adressen til det første elementet.to this, it will add 10*sizeof(char)
to that address.

Og når du
legger 10
til dette, vil det legge 10 * sizeof (char)
til denne adressen.Så til slutt det pionts å m2 [5] [0].(beklager for den feilen .. takk Silvio)cheers ...
Sist endret av sinu_gowde den 03. Feb 2006 9:16, endret 2 ganger totalt

 
m_t_blind skrev:1.My første spørsmålet er at dette er riktig for generell i C, eller bare apears på spesifikke kompilator?

 
Også se comp.lang.c OSS kommentarer vedrørende array versus pekeren:
http://c-faq.com/aryptr/index.html

 
Jeg tror du trenger å forstå de grunnleggende av matrise og pekere ...når u sier m [10] ..ingen rolle om dens erklærte røye eller int eller double ..du er bare allocationg en mengde minne og som u har navn ..og m [0] vil bli det første elementet i matrisen ..og når u nød å erklære og pekeren de er uttrykkelig erklærer som int * pek mv.

så langt i knw c. ..bare studere grunnleggende av C matrise og pekere ..u vil bli bra ..Pekeren er svært kraftig u kan krasje systemet med det!

<img src="http://www.edaboard.com/images/smiles/icon_idea.gif" alt="Idea" border="0" />
hvis u trenger på Internett c boken i arleady laste den opp på rapidshare ..her er linkenh ** p: / / rapidshare.de/files/12360722/C-K_R-Material.pdf.html

 
Yeap ..at ur sayin er rite ..det er ingen begrepet 2D array i C..hva er det du kan ha flere dimensjonale array og mer over de Måten elementene er ordnet i minnet er i form av et enkelt spor ..som dere vet ..(under turbo C) heltall tar 2 byte og karakter tar 1 byte .. hver minnespor er fordelt med 2 byte med minne / 1 byte for karakter og * (& a [0] [0] 10) er lik * ( første minnetildeling 10 plasser som er 1 byte hver) så til slutt de-referanser den og så skrives det ..

med hilsen
Arun

 
ok takker dere alle, (og beklager for den feilen m2 [0] [2] whitch eksisterer ikke, jeg mener m2 [0] [1])

 
Jeg vil lage en char array og ønsker å kalle meldinger som dette:
melding [0 ]---> for første melding
messsage [1] ---> andre budskapet og så videre ...
Hvordan kan jeg gjøre det?

 
Du vil Creat rekke pekere som peker på Array of char ...u kan se av follwoing diagrammer ...
Beklager, men du må logge inn for å vise dette vedlegget

 

Welcome to EDABoard.com

Sponsor

Back
Top