私はCのポインタについて何か基本的なことを誤解していますが、これは簡単なはずですが検索で何も表示されません。私は次のコードの動作を理解していません。CポインタをNULLに代入する
#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;
}
出力します。
FIRST TEST: ptr is not null
SECOND TEST: ptr is not null
なぜ2番目のテストでもポインタがNULLではないと表示されるのはなぜですか?私は関数の特定の失敗を示すための一種の 'return flag'としてNULLポインタ割り当てを使用しようとしています。しかし、後でポインタをテストすると、NULLには見えません。
あなたが答えた直前であったのは私が突然私を殴ったのです。私は外側のポインタを割り当てることができるようにポインタへのポインタが必要です! – lynks