#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 nullSECOND TEST: ptr is not null
为什么第二个测试仍然看到指针不为NulL?我正在尝试使用NulL指针分配作为一种“返回标志”来表示功能的某种故障.但是之后测试指针,似乎不是NulL.
解决方法 这是因为指针是通过值而不是引用的.如果要更改函数内的指针,则需要将实际指针作为指针传递,即指向指针的指针:voID my_function(char **a){ *a = NulL;}
使用 *** 作符&当你调用函数获取指针的地址时:
my_function(&ptr);总结
以上是内存溢出为你收集整理的C将指针指定为NULL全部内容,希望文章能够帮你解决C将指针指定为NULL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)