The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > High Level Programming
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 01-24-2008
JamesGoh JamesGoh is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 89
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
  #2 (permalänk)  
Old 01-24-2008
Shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: oktober 2007
Ort: USA
Inlägg: 753
Citat:
Ursprungligen postat av JamesGoh View Post
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
Ja de gör. Din förklaring skapar en pekare, men inte begränsa det till en variabel av typen int. Har kompilera din kod okej och vad compiler?
  #3 (permalänk)  
Old 01-24-2008
JamesGoh JamesGoh is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 89
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..
  #4 (permalänk)  
Old 01-25-2008
Shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: oktober 2007
Ort: USA
Inlägg: 753

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);

  #5 (permalänk)  
Old 01-28-2008
JamesGoh JamesGoh is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 89
Citat:
Ursprungligen postat av Shamrock View Post
Kod:
int *ptr=5;

Pointer kan bara initieras till noll eller noll om den inte pekar på en variabel av denna typ.
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?
  #6 (permalänk)  
Old 01-29-2008
Shamrock shamrock is offline Forum Advisor  
Registered User
  
 

Join Date: oktober 2007
Ort: USA
Inlägg: 753
Citat:
Ursprungligen postat av JamesGoh View Post
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?
Ja ASCII-tecken har minnesadresser om 5 är ett heltal inte ett ASCII-tecken. Vara intrepreted ett tecken i C den behöver vara i enkla citationstecken.


Kod:
char v = '5';

Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 08:25.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0