![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| minnesadresser | areef4u | High Level Programming | 0 | 08-04-2006 08:43 |
| Multibyte tecken till ASCII | jerardfjay | Shell-programmering och Skript | 8 | 11-18-2005 02:45 |
| Hex tecken i ASCII-fil | budrito | HP-UX | 2 | 08-10-2005 11:26 |
| dum fråga om ASCII-tecken | jalburger | High Level Programming | 2 | 09-28-2004 04:56 |
| minnesadresser | Paravozzz | High Level Programming | 0 | 10-15-2002 01:17 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
c språk + enkel fråga om minne adresser och ASCII-tecken
Bara en enkel fråga (som kanske verkar dumt så ha tålamod med mig) som uppstod i mig häromdagen. Har ASCII-tecken i sig (t.ex. / n, 0, a) ha en verklig minne adress? Min fråga uppstår, eftersom Im medveten om att varje gång jag skapar och initalise en pekare som detta till exempel Kod:
int *ptr = 5; Jag får alltid en nollpekare fel. många tack |
|
||||
|
Citat:
|
|
||||
|
För koden jag nämnde i mitt första inlägg Kod:
int *ptr=5; kompilatorn (jag använder gcc btw), producerade en varning att säga att en pekare från heltal gjordes utan en nödvändig typecast. (Shamrock varnat mig för detta, så detta gcc produktionen förväntades sannolikt). Jag försökte detta Kod:
char *str="helloworld\n";
printf("string value is %s\n",*str)
och hittade programmet sammanställs bra, men vid körning jag fick en felaktig segmentering fel. Jag fann också att i första kodsegmentet, om du ignorerar varningen kompilator och kör programmet direkt, får du samma körfel. Pekare som är avsedda att ges till minnesplatser (och peka på värden), med hänsyn till denna grundläggande förståelse och det faktum att ASCII-tecken har minnesadresser, inte båda kod segmenten tekniskt korrekt? Senast redigerad av JamesGoh; 01-24-2008 at 07:18.. |
|
||||
|
Kod:
int *ptr=5; Pointer kan bara initieras till noll eller noll om den inte pekar på en variabel av denna typ. Kod:
char *str="helloworld\n";
printf("string value is %s\n",*str)
Den "% s" omvandling specifikation tar en pekare argument inte den faktiska tecken som * str pekar på. Så om du vill skriva ut hela strängen ... Kod:
printf("string value is %s\n", str);
och om du vill skriva ut det tecken som * str pekar på ... Kod:
printf("str points to %c\n", *str);
|
|
||||
|
Så här är det alltid (utom för användardefinierade strängar) i verkliga programmering, även om enskilda ASCII-tecken (till exempel 5) har minne adresser?
|
|
||||
|
Citat:
Kod:
char v = '5'; |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|