![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| minneadresser | areef4u | High Level Programmering | 0 | 08-04-2006 08:43 |
| Multibyte tegn til ASCII | jerardfjay | Shell programmering og Skripting | 8 | 11-18-2005 02:45 |
| Heksadesimale tegn ascii fil | budrito | HP-UX | 2 | 08-10-2005 11:26 |
| dumt spørsmål om ascii tegn | jalburger | High Level Programmering | 2 | 09-28-2004 04:56 |
| minneadresser | Paravozzz | High Level Programmering | 0 | 10-15-2002 01:17 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
c språk + enkle spørsmål angående minneadresser og ASCII-tegn
Bare et enkelt spørsmål (som kan virke dum så bære over med meg) som dukket opp i tankene mine her om dagen. Do ASCII-tegn i seg selv (f.eks / n, 0, a) ha en faktisk minne adresse? Mitt spørsmål melder seg, fordi Im oppmerksom på at hver gang jeg oppretter og initalise en peker som dette for eksempel Code:
int *ptr = 5; Jeg får alltid en nullpeker feil. mange takk |
|
||||
|
Sitat:
|
|
||||
|
For koden jeg snakket om i mitt første innlegg, Code:
int *ptr=5; kompilatoren (jeg bruker gcc btw), produsert en advarsel som sier at en peker fra heltall ble gjort uten en nødvendig typecast. (Shamrock advart meg om dette, så dette gcc utgang var sannsynligvis forventet). Jeg prøvde dette Code:
char *str="helloworld\n";
printf("string value is %s\n",*str)
og fant programmet kompileres fint, men under kjøring fikk jeg en segmentering feil feil. Jeg har også funnet at i første kodesegmentet, hvis du ignorerer kompilatoren advarsel og kjøre programmet rett, får du de samme run-time feil. Som henvisningene er ment å bli tildelt minneplasseringer (og peker på verdier), med hensyn til dette grunnleggende forståelse og det faktum at ASCII tegn minneadresser, ikke begge koden segmentene teknisk korrekt? Sist endret av JamesGoh; 01-24-2008 kl 07:18.. |
|
||||
|
Code:
int *ptr=5; Peker bare kan initialiseres til null eller null hvis det ikke peke på en variabel av denne typen. Code:
char *str="helloworld\n";
printf("string value is %s\n",*str)
Den "% s" konvertering Spesifikasjonen tar en peker argumentet ikke selve tegnet som * str peker til. Så hvis du vil skrive ut hele strengen ... Code:
printf("string value is %s\n", str);
og hvis du vil skrive ut tegnet * str poeng til ... Code:
printf("str points to %c\n", *str);
|
|
||||
|
Så dette er alltid tilfelle (unntatt for brukerdefinerte strenger) i virkelighetens verden programmering, selv om enkelte ASCII-tegn (for eksempel 5) har minneadresser?
|
|
||||
|
Sitat:
Code:
char v = '5'; |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|