Avatar billede bolmer Nybegynder
07. februar 2006 - 20:10 Der er 6 kommentarer

Pointer som argument til funktioner

Jeg faldt over dette udadtil simple eksemple:

#include <stdlib.h>
#include <stdio.h>

int blop(int **a)
{
 
  int t =(int)*a;
  int y = 10+t;
  return y;
}


int main(void)
{

  int *a;
  a = (int *)100;
  printf("%d\n",blop(&a));
  return 0;
}

Jeg forstår ikke helt hvordan kaldet til blop fungere.

I man laves en pointer, a, til et tal, 100. Adresse på denne pointer bruges som argument til blop. Men blop acceptere kun en pointer til en pointer. Hvordan kan adressen til pointer a, være en pointer til en pointer?

Hvis man skal prøve at se det for sig så forstiller jeg mig et stort array (hukommelsen) hvor a peger på tallet 100. Men hvorhenne ligger a?
Avatar billede arne_v Ekspert
07. februar 2006 - 20:24 #1
adresse og pointer er stort set synonymer saa adressen af en pointer og en pointer til en
pointer er det samme
Avatar billede arne_v Ekspert
07. februar 2006 - 20:24 #2
selve a ligger paa stakken
Avatar billede bolmer Nybegynder
07. februar 2006 - 20:31 #3
Dvs både 100 og a ligger på stakken?
Avatar billede arne_v Ekspert
07. februar 2006 - 20:33 #4
a ligger paa stakken

100 ligger enten i kode eller i konstant segment (jeg kan ikke huske
om numeriske konstanter ligger det ene eller detr andet sted i x86 kode)
Avatar billede arne_v Ekspert
07. februar 2006 - 20:43 #5
bemaerk iovrigt at *a ikke noedvendigvis er validt

nogle platforme (igen kan jeg ikke huske Win32 x86) vil give en fejl fordi
100 ikke er en valid adresse
Avatar billede arne_v Ekspert
12. marts 2006 - 05:20 #6
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester