C将指针指定为NULL

C将指针指定为NULL,第1张

概述我对C中的指针有一些基本的误解,这应该很简单,但搜索没有什么.我不明白以下代码的行为; #include <stdlib.h>#include <stdio.h>void my_function(char *);int main(int argc, char *argv[]) { char *ptr; ptr = malloc(10); if(ptr != NU 我对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 nullSECOND TEST: ptr is not null

为什么第二个测试仍然看到指针不为NulL?我正在尝试使用NulL指针分配作为一种“返回标志”来表示功能的某种故障.但是之后测试指针,似乎不是NulL.

解决方法 这是因为指针是通过值而不是引用的.如果要更改函数内的指针,则需要将实际指针作为指针传递,即指向指针的指针:
voID my_function(char **a){    *a = NulL;}

使用 *** 作符&当你调用函数获取指针的地址时:

my_function(&ptr);
总结

以上是内存溢出为你收集整理的C将指针指定为NULL全部内容,希望文章能够帮你解决C将指针指定为NULL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存