2016-03-28 19 views
0

auf null, wenn ich die folgende fucntioneinen Zeiger von Zeigern Initialisierung

int execute_command(char **args) { 
    if (args[0] == NULL) { 
     return 1; 
    } 
    //more code... 
} 

haben Wie kann ich nenne absichtlich execute_command(blank) wo char **blank (null) initialisiert so wäre das zu ermöglichen, wenn Aussage bewertet werden wahr?

+0

'char * arg = NULL; execute_command (&arg); ' –

Antwort

2

Eine einfache Möglichkeit, dies zu tun, ist ein Array von Zeigern der Größe ein, und setzen Sie den Inhalt auf NULL, wie diese zu erstellen:

char *args[] = { NULL }; 

Jetzt können Sie dieses Array execute_command passieren:

execute_command(args); 

das Array von Zeigern würde auf einen Zeiger auf Zeiger bei Funktionsaufruf "verfallen" und den gewünschten Effekt erzeugen.

0

var[0] entspricht *(var + 0), was bedeutet, dass das erste, worauf hingewiesen wird, null sein muss.

Daher sollte es die Adresse eines Zeigers auf Null sein (weil es char** akzeptiert), dh. char* arg = NULL; execute_command(&arg);.