C Affecter le Pointeur à NULL

Je suis malentendu quelque chose de fondamental sur les pointeurs en C, cela devrait être simple, mais la recherche apporte rien. Je ne comprends pas le comportement de la suite de code;

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

void my_function(char *);

int main(int argc, char *argv[]) {
    char *ptr;
    ptr = malloc(10);

    if(ptr != NULL) printf("FIRST TEST: ptr is not null\n");
    else printf("FIRST TEST: ptr is null\n");

    my_function(ptr);

    if(ptr != NULL) printf("SECOND TEST: ptr is not null\n");
    else printf("SECOND TEST: ptr is null\n");
}

void my_function(char *a) {
    a = NULL;
}

Sorties;

FIRST TEST: ptr is not null
SECOND TEST: ptr is not null

Pourquoi le deuxième test toujours voir le pointeur de ne pas NULLE? Je suis en train d'utiliser un pointeur NULL affectation comme une sorte de "code de retour" pour indiquer un certain échec de la fonction. Mais lors d'un test le pointeur par la suite, il ne semble pas être NULL.

OriginalL'auteur lynks | 2013-04-30