/
Forside
/
Teknologi
/
Udvikling
/
C/C++
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
C/C++
#
Navn
Point
1
BertelBra..
2425
2
pmbruun
695
3
Master_of..
501
4
jdjespers..
500
5
kyllekylle
500
6
Bech_bb
500
7
scootergr..
300
8
gibson
300
9
molokyle
287
10
strarup
270
lidt pointer gymnastik
Fra :
Kristian Soerensen
Dato :
17-02-04 15:37
Hejsa!
Jeg har et problem, hvor jeg vil give en pointer til første element i et
array af char pointers med som argument til en funktion (traverse i
nedenstående) - og lade denne funktion behandle data i arrayet og
herefter returnere.
Problemet er (så vidt jeg kan se) at i "traverse" er det pointeren der
overskrives - og ikke de data den peger på.
- Er der nogen der har løsningsforslag?
Mvh.
Kristian Sørensen.
void traverse(char *a) {
a = "1";
}
main ()
{
char *a[10];
traverse(*a);
printf(a[0]);
}
Jesper Toft (
17-02-2004
)
Kommentar
Fra :
Jesper Toft
Dato :
17-02-04 16:51
Kristian Soerensen wrote:
> Problemet er (så vidt jeg kan se) at i "traverse" er det pointeren der
> overskrives - og ikke de data den peger på.
>
> - Er der nogen der har løsningsforslag?
Problemet er at funktionen får en pointer til første element, derved kan den
kun rette i dette element, men ikke rette pointeren. Den bliver nød til at
få en pointer til en pointer..
noget i retningen af:
void traverse(char **a) {
*a = "1";
}
....
char *a[10];
traverse(&a[0]);
eller blot
traverse(a);
--
/Jesper
Kristian Soerensen (
18-02-2004
)
Kommentar
Fra :
Kristian Soerensen
Dato :
18-02-04 09:37
Tak for det! - Det var lige hvad der skulle til :)
Jesper Toft wrote:
> Kristian Soerensen wrote:
>
>
>>Problemet er (så vidt jeg kan se) at i "traverse" er det pointeren der
>>overskrives - og ikke de data den peger på.
>>
>>- Er der nogen der har løsningsforslag?
>
>
>
> Problemet er at funktionen får en pointer til første element, derved kan den
> kun rette i dette element, men ikke rette pointeren. Den bliver nød til at
> få en pointer til en pointer..
>
> noget i retningen af:
>
> void traverse(char **a) {
> *a = "1";
> }
>
> ...
>
> char *a[10];
> traverse(&a[0]);
> eller blot
> traverse(a);
>
Nicolai Hansen (
18-02-2004
)
Kommentar
Fra :
Nicolai Hansen
Dato :
18-02-04 15:23
> void traverse(char *a) {
> a = "1";
> }
>
er det ikke bare
void traverse(char *a)
{
*a='1';
}
?
/Nic
Kristian Soerensen (
18-02-2004
)
Kommentar
Fra :
Kristian Soerensen
Dato :
18-02-04 16:04
Nicolai Hansen wrote:
>>void traverse(char *a) {
>> a = "1";
>>}
>>
>
>
> er det ikke bare
>
> void traverse(char *a)
> {
> *a='1';
> }
>
> ?
char *a er kun en reference til første element i arrayet.
og *a er det samme som a[0] - hvilket vil sige første _karakter_ i
første plads i arrayet. Derfor virker det ikke når man vil gennemgå arrayet.
KS.
Nicolai Hansen (
19-02-2004
)
Kommentar
Fra :
Nicolai Hansen
Dato :
19-02-04 13:39
> > void traverse(char *a)
> > {
> > *a='1';
> > }
> >
> > ?
> char *a er kun en reference til første element i arrayet.
> og *a er det samme som a[0] - hvilket vil sige første _karakter_ i
> første plads i arrayet. Derfor virker det ikke når man vil gennemgå arrayet.
>
> KS.
while (*a!=0) *a++='1'; ?
(hvis altså a er en normal null-termineret streng...)
Nicolai Hansen (
19-02-2004
)
Kommentar
Fra :
Nicolai Hansen
Dato :
19-02-04 13:40
ah, glem det
du har char *a[10];
så skal man lige en tak længere ud, som det andet svar siger :)
Søg
Alle emner
Teknologi
Udvikling
C/C++
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408921
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.