我对 C 中的指针有一些基本的误解,这应该很简单,但搜索什么也没有。我不明白以下代码的行为;
#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。