WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   C - char* und char[] (http://www.wcm.at/forum/showthread.php?t=112596)

_m3 20.10.2003 09:05

Zitat:

Original geschrieben von sagi
Das Problem dabei ist, dass dieser Speicherbereich mit dem Ende der Funktion geloescht wird und daher der Pointer ins nichts geht.
Wie waers mit "static"?
Zitat:

Der Modifier static erzeugt dauerhaften Speicher fuer eine Variable. Das heisst der Wert einer funktionslokalen Variablen bleibt erhalten und beim naechsten Aufruf kann wieder drauf zugegriffen werden.

sagi 20.10.2003 10:32

m3: das ist einfach unschoener Programierstil ;).

1) Der Quelltext wird dabei unuebersichtlich.

2) Abgesehen davon ist es auch nicht sehr gut, wenn das Ding die ganze Zeit im Speicher herumliegt. Braucht ja alles seinen Platz.

Also auch wenn dieser Weg wesentlich einfacher ist ist unbedingt davon abzuraten.

mfg

c.

_m3 20.10.2003 12:59

War ja nur ein Vorschlag. ;)
Wahre Männer machen das alles mit malloc! :cool:

sagi 20.10.2003 13:21

Zitat:

Wahre Männer machen das alles mit malloc!
eben ;)

Wahre Maenner wuerden das aber auch mittels Rekursoin machen... nicht etwa, weil es schneller oder einfacher ist... nein, weil sie es koennen :D

mfg

c.

_m3 20.10.2003 13:30

Gibt es andere Lösungsmöglichkeiten als eine Rekursion? ;)

Biri 20.10.2003 13:44

was ist überhaupt der sinn dieses sources ?
zeichenketten mit zufälliger abfolge von selbst- u. mitlauten erzeugen ? (wozu braucht ma das ?)

PHP-Code:

charNewBrand(int n) { 
  
int consvowi
  
charbrand
  
brand = (char *)malloc(sizeof(char)+1); 
  
0
  while(
n) { 
    
cons RandNumber(21); 
    
vow RandNumber(5); 
    
strncat(brand, &consonants[cons], 1); 
    
1
    if(
n) { 
      
strncat(brand, &vowels[vow], 1); 
      
1
    } 
  } 
  return 
brand


- für brand werden 2 zeichen allokiert - bissl wenig, oder ?
- wozu das "if" - die angegebene bedingung ist immer true ! (weil in schleife)

-hannes

sagi 20.10.2003 14:04

Zitat:

Original geschrieben von Biri
was ist überhaupt der sinn dieses sources ?
zeichenketten mit zufälliger abfolge von selbst- u. mitlauten erzeugen ? (wozu braucht ma das ?)

- für brand werden 2 zeichen allokiert - bissl wenig, oder ?
- wozu das "if" - die angegebene bedingung ist immer true ! (weil in schleife)

-hannes

1) muss natuerlich
PHP-Code:

brand = (char *)malloc(n*sizeof(char)+1); 

heissen :)

2) nein. davor ist ja ein i = i + 1; (btw: ++i ist einfacher :) )

@m3: :confused: angeblich. ich hab mich auch gewundert

mfg
c.

Biri 20.10.2003 16:56

Zitat:

2) nein. davor ist ja ein i = i + 1; (btw: ++i ist einfacher )
stimmt - das hab ich übersehn. ;)

-hannes

_m3 20.10.2003 17:00

Zitat:

Original geschrieben von sagi
2) nein. davor ist ja ein i = i + 1; (btw: ++i ist einfacher :) )
WURSCHT! Das optimiert ein aktueller Compiler eh.

sagi 20.10.2003 17:10

Zitat:

Original geschrieben von _m3
WURSCHT! Das optimiert ein aktueller Compiler eh.
Im Prinzip ist es egal. Es geht nur darum, dass man "sauberen Code" hat.

mfg

c.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag