有没有一个例子说明在C中正确执行程序需要空指针?

Ada*_*27X -4 c pointers

什么是需要使用空指针正确执行的应用程序示例?只需检查空指针并进行测试就不算数了.这个例子应该被C程序员"常用".

经过一番思考,我有一个可能的例子,但我不想影响答案(还).

编辑:这个问题是一个编程工作的访谈,需要知识而不是C语言中的神似技巧.答案不会是语言的一些深奥的方面.

P.P*_*.P. 6

execvp族函数期望参数列表以空指针终止.例如,

 execvp("/bin/ls", arguments);
Run Code Online (Sandbox Code Playgroud)

这里arguments应该以NULL结尾.

  • @ Adam27X然后你的面试官是深奥的.(告诉面试问题是否愚蠢的一个很好的经验法则是它会在SO上关闭.) (4认同)
  • @CarlNorum:它更像是使用空指针作为可变长度数组的终结符. (3认同)
  • @ Adam27X你把这个问题变成了令人沮丧的横向思维难题之一,除了紧紧抓住更精细的语义点.你想要一个答案,或者你想要你想到的答案吗? (3认同)
  • @ Adam27X如何让人们猜测你的想法不同于让他们猜猜面试官在想什么?我真的不确定这个问题是否可以回答. (3认同)

Jon*_*ler 6

strtok()对于第二次和后续迭代,该函数依赖于NULL; 它表现得更好的亲戚strtok_r()也是如此strtok_s().


略有不同的重点:

  • 字符串搜索等功能strchr(),并strstr()返回NULL指针时,他们无法找到你问他们去寻找.

  • 分配失败时,内存分配函数返回NULL指针.

  • fopen()函数无法打开文件时返回NULL指针.

  • opendir()函数无法打开目录时返回NULL指针.

注意这里有一个主题?通常返回NULL指针作为错误指示.这是否算作"只是检查"或许更值得商榷.