🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13988

Re: Raar probleem in C

#13988
From: Spiri
Date: Sun, 06 May 2001 11:51
67 lines
3478 bytes
We waren er vandaag ook achter gekomen :-)

Die prof is niet echt bezig met C, bedoeling was dat wij de taal
zouden leren in een week tijd. Niet iemand die zich voltijds
bezighoudt met C dus.

Anyway, reden waarom ik dacht dat het niet werd aangenomen is  als
volgt.

Je ziet dit: void draaiom( char s[] );
Deze functie verwacht als argument het adres van het eerste karakter
van een string. Ik geef echter als argument de string zelf.

Stel nu dat ik hetvolgende doe:

char s[] = "Kevin;
draaiom( s );

Dan werkt het perfect. Omdat die s het adres bevat van het eerste
karakter, en niet de waarde "Kevin".

Volgens mij mag je in een functie in C de waarden van de argumenten
WEL veranderen zonder dat neveneffecten optreden, omdat er gebruik
wordt gemaakt van call by value.


On Thu, 12 Apr 2001 07:02:56 GMT, "Luc Kumps" <NOkumpsSPAM@pandora.be>
wrote:

>Ik vermoed _sterk_ dat je "prof" over niet erg veel ervaring op computers
>beschikt ;-)
>
>In je programma geef je een constante string ("Kevin") door aan de draaiom
>routine.
>De compiler die je gebruikt is zo verstandig om constante string te
>beschermen tegen wijziging, door het geheugen waarin die string zit
>"read-only" te maken.
>
>Dit is belangrijk omdat:
>1. Men kan verwachten dat constante strings constant, dus ongewijzigd
>blijven.
>2. In de compiler "constant string pooling" supporteert dan is het des te
>belangrijk dat de string niet wijzigen. Een voorbeeld:
>
>draaiom("Kevin");
>printf("%s\n", "Kevin");
>
>Bij "string pooling" wordt de constante string "Kevin" slechts 1 maal
>opgeslagen. Het resultaat van bovenstaand programma zou zijn dat de printf
>lijn "neviK" toont!
>In Visual C++ kun je string pooling aanzetten met "/Gf". In dat geval zal
>bonvenstaand programma tweemaal "neviK" tonen. Indien je "/GF" gebruikt, zal
>er een runtime error optreden zoals jij beschrijft. Indien je niets opgeeft,
>dan wordt er 1 maal "neviK" en 1 maal "Kevin" getoond, omdat de twee
>constante string aparte geheugenlocaties innemen...
>
>Indien je de "/ZI" flag gebruikt (en die wordt automatisch gebruikt in de
>default "Debug" settings), dan heb je automatisch "/GF".
>
>Een paar KB articles behandelen deze problemen:
>
>http://support.microsoft.com/support/kb/articles/Q198/4/77.ASP
>http://support.microsoft.com/support/kb/articles/Q199/2/90.ASP
>
>Groetjes,
>
>Luc
Technical Details
Message-ID: <5peafto752qkv3o3ume6l6bi1qb5mj3s0l@4ax.com>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!dispose.news.demon.net!demon!btnet-peer0!btnet-peer1!btnet!newsfeeds.belnet.be!news.belnet.be!afrodite.telenet-ops.be!not-for-mail
References: <5h49dt44qracr24j8od92i6nb41g4nhu76@4ax.com> <AqcB6.32951$ii5.3335444@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,5b8f6d4a879dd9fb
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-05-06 04:52:02 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!dispose.news.demon.net!demon!btnet-peer0!btnet-peer1!btnet!newsfeeds.belnet.be!news.belnet.be!afrodite.telenet-ops.be!not-for-mail
From: Spiri <spiri@pandora.be>
Newsgroups: be.comp.programming
Subject: Re: Raar probleem in C
Message-ID: <5peafto752qkv3o3ume6l6bi1qb5mj3s0l@4ax.com>
References: <5h49dt44qracr24j8od92i6nb41g4nhu76@4ax.com> <AqcB6.32951$ii5.3335444@afrodite.telenet-ops.be>
X-Newsreader: Forte Agent 1.8/32.548
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Lines: 67
Date: Sun, 06 May 2001 11:51:49 GMT
NNTP-Posting-Host: 213.224.151.232
X-Complaints-To: abuse@pandora.be
X-Trace: afrodite.telenet-ops.be 989149909 213.224.151.232 (Sun, 06 May 2001 13:51:49 MET DST)
NNTP-Posting-Date: Sun, 06 May 2001 13:51:49 MET DST
Organization: Telenet Internet