Stocker la valeur du pointeur

Que je sache, quand un pointeur est passé dans une fonction, il devient simplement une copie de la vraie pointeur. Maintenant, je veux le vrai pointeur d'être modifié sans avoir à retourner un pointeur de fonction. Par exemple:

int *ptr;

void allocateMemory(int *pointer)
{
     pointer = malloc(sizeof(int));
}

allocateMemory(ptr);

Une autre chose, qui est, comment puis-je allouer de la mémoire à 2 ou plusieurs dimensions des tableaux? Pas par indice, mais par l'arithmétique des pointeurs. Est-ce:

int array[2][3];
array[2][1] = 10;

la même chose que:

int **array;
*(*(array+2)+1) = 10

Aussi, pourquoi dois-je passer dans la mémoire de l'adresse d'un pointeur à une fonction, et non le pointeur lui-même. Par exemple:

int *a;

pourquoi pas:

allocateMemory(*a) 

mais

allocateMemory(a)

Je sais que j'ai toujours à faire cela, mais je ne comprends vraiment pas pourquoi. S'il vous plaît expliquez moi.

La dernière chose est, en un pointeur comme ceci:

int *a;

Est l'adresse de la mémoire contenant la valeur réelle, ou l'adresse de la mémoire du pointeur de la souris? Je pense toujours à un est l'adresse mémoire de la valeur réelle qu'il est pointé, mais je ne suis pas sûr à ce sujet. Par ailleurs, lors de l'impression de pointeur comme ceci:

printf("Is this address of integer it is pointing to?%p\n",a);
printf("Is this address of the pointer itself?%p\n",&a);
Veuillez poser une question à la fois.
Le deuxième exemple de votre deuxième question, les accès à la mémoire non. Est-ce que sur le but?
Vous pouvez accepter une réponse en cliquant sur un creux de vérifier.

OriginalL'auteur Amumu | 2011-01-11