我誤解了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
爲什麼第二個測試仍然看到指針爲非NULL?我試圖使用NULL指針賦值作爲一種「返回標誌」來指示函數的某種失敗。但之後測試指針時,它似乎不是NULL。
在你回答之前,它突然讓我感到非常啞,我需要一個指向指針的指針才能分配外部指針! – lynks 2013-04-30 12:03:01