是否在C中指定了指针?

时间:2010-06-03 14:46:17

标签: c pointers variable-assignment if-statement

如何编写if语句告诉程序指针是否已分配?

错误的例子

if (*badpdr[0]==0);

5 个答案:

答案 0 :(得分:6)

你的意思是if (badptr==NULL)

请注意,在定义指针或“取消指定”指针时,必须先将指针设置为NULL(例如,删除它所引用的对象)。否则,它将包含垃圾,此测试将失败,因为该值不是0.

你也可以比较0而不是NULL,SO上已经有足够的参数,这是正确的形式所以我不会重复它们。

答案 1 :(得分:3)

char *ptr=NULL;

将指针初始化为NULL;然后,您可以在尝试推断它之前检查它是否NULL是否有效。

答案 2 :(得分:1)

C++未分配int个变量时,它们的初始值为2686392!

答案 3 :(得分:0)

您可以为SIGSEGV安装信号处理程序,然后尝试取消引用指针 - 如果您发现自己在信号处理程序内部,指针未被分配(或指向无效的内存地址,这基本上是相同的事情)

但是,可能存在未分配指针指向属于进程内存空间的有效地址的情况 - 在这种情况下,不会引发SIGSEGV

答案 4 :(得分:0)

您可以使用宏来完成工作:

var exec = require('child_process').exec;
module.exports.myFunction1 = function() {
    return new Promise(function(resolve, fail){
        // this function runs for like 3 seconds
        exec('long running shell command' ,function(err,stdout,stderr) {
            if (err) fail(err);
            else resolve(stdout, stderr);
        });
    });
};

module.myFunction1()
.then(function(stdout){
      console.log("Output myFunction1: " + stdout);
})
.then(module.myFunction2)
.then(function(stdout){
      console.log("Output myFunction2: " + stdout);
})