/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Forskel på & og *??
Fra : JS


Dato : 22-03-05 21:22

Jeg har følgende kode:

#include <stdio.h>

void print_num(void *arg){

int z;
z = * (int *) arg;

printf("%d\n", z);
}



main(){

int a = 23;
int *ip;
ip = &a;

print_num("%d\n", *ip);
print_num("%d\n", &a);

}

Hvad kan det være at resultatet er det samme når jeg i de to kald til
print_num sender henholdsvis indholdet på adressen og selve adresse?

Mvh
Johs



 
 
jesper (23-03-2005)
Kommentar
Fra : jesper


Dato : 23-03-05 03:37

JS wrote:

> Jeg har følgende kode:
>
> #include <stdio.h>
>
> void print_num(void *arg){
>
> int z;
> z = * (int *) arg;
>
> printf("%d\n", z);
> }
>
>
>
> main(){
>
> int a = 23;
> int *ip;
> ip = &a;
>
> print_num("%d\n", *ip);
> print_num("%d\n", &a);
>
> }
>
> Hvad kan det være at resultatet er det samme når jeg i de to kald til
> print_num sender henholdsvis indholdet på adressen og selve adresse?
Fordi det gør du ikke.
*ip indeholder ikke 23 men er en pointer, ligesom &a
> Mvh
> Johs


Mogens Hansen (22-03-2005)
Kommentar
Fra : Mogens Hansen


Dato : 22-03-05 21:47


"jesper" <jesper@altern.org> wrote in message
news:424081bd$0$244$14726298@news.sunsite.dk...

[8<8<8<]
> Fordi det gør du ikke.
> *ip indeholder ikke 23 men er en pointer, ligesom &a

Forkert.

"ip" er en pointer til en int, som indeholder adressen på a.
"*ip" er en derefereret pointer til en int, der giver samme værdi a.

Venlig hilsen

Mogens Hansen



Jens Jakobsen (23-03-2005)
Kommentar
Fra : Jens Jakobsen


Dato : 23-03-05 09:04

Johs(JS) udskriver i print_num hvad arg peger på..
arg er første parameter, og i kaldet til print_num er første parameter
"%d\n"

Jeg kunne godt tro at det der printes ud er 25637 (16bit) eller 680997
(32bit)
Dette vil være det samme uanset hvad det andet parameter er.

Et godt spørgsmål er hvorfor han kan Johs kan kalde print_num med to
parametre istedet for det ene det er defineret med.


.... eller er jeg gået glip af et eller andet væsentligt?

Venlig hilsen
Jens Jakobsen

"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:42408458$0$67259$157c6196@dreader2.cybercity.dk...
>
> "jesper" <jesper@altern.org> wrote in message
> news:424081bd$0$244$14726298@news.sunsite.dk...
>
> [8<8<8<]
>> Fordi det gør du ikke.
>> *ip indeholder ikke 23 men er en pointer, ligesom &a
>
> Forkert.
>
> "ip" er en pointer til en int, som indeholder adressen på a.
> "*ip" er en derefereret pointer til en int, der giver samme værdi a.
>
> Venlig hilsen
>
> Mogens Hansen
>



Mogens Hansen (22-03-2005)
Kommentar
Fra : Mogens Hansen


Dato : 22-03-05 21:41


"JS" <dsa.@asdf.com> wrote in message news:d1puaa$i5e$1@news.net.uni-c.dk...
> Jeg har følgende kode:

Oversætter koden (jeg antager at det er C) ?

[8<8<8<]
> void print_num(void *arg){

Den tager eet argument,...

[8<8<8<]
> int a = 23;
> int *ip;
> ip = &a;

Det kan godt betale sig at initialisere variable samtidig med de erklæres:
int* ip = &a;

>
> print_num("%d\n", *ip);

men kaldes med 2 parametre.

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste