我误解了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