调用函数不起作用..我不知道发生了什么

时间:2013-11-29 22:39:11

标签: c

总之,我想这样做:

createProcesswithPipe(pointer++, executes, execute);

但是这里指针永远不会增加到下一个函数(我尝试打印它并且它一直打印0,直到我的计算机最终崩溃。)

现在我做的是这个:

pointer++;
createProcesswithPipe(pointer, executes, execute);

似乎符合逻辑的权利?

现在我收到此错误:分段错误(核心转储)

现在我得到了一些信息,我也会分享一些信息,因为看起来Segmentation fault是这里的主要问题......

所以这是一个递归函数,我输入的第一件事是打印出指针值(这只是检查它),当我的代码不包含递归部分时,当我注释掉这部分:

createProcesswithPipe(pointer, executes, execute);

开始时的printf工作并打印0然后我得到分段错误。

当它没有被注释掉时,它甚至没有打印出第一个0,它只是关闭程序并出现错误分段错误。

所以换句话说,当它没有被注释掉时,似乎整个程序在它到达代码的那一部分之前崩溃了?

2 个答案:

答案 0 :(得分:1)

此代码:

createProcesswithPipe(pointer++, executes, execute);

与:

相同
createProcesswithPipe(pointer, executes, execute);
pointer++;

另一方面,此代码

pointer++;
createProcesswithPipe(pointer, executes, execute);

与:

相同
createProcesswithPipe(pointer + 1, executes, execute);
pointer++;

答案 1 :(得分:1)

使用预增量

createProcesswithPipe(++pointer, executes, execute);
在评估表达式之前,

++指针递增指针 而指针++在递增之前对其进行评估。如果使用预增量,则不需要额外的线。或者,你可以这样做:

createProcesswithPipe(pointer+=1, executes, execute);