总之,我想这样做:
createProcesswithPipe(pointer++, executes, execute);
但是这里指针永远不会增加到下一个函数(我尝试打印它并且它一直打印0,直到我的计算机最终崩溃。)
现在我做的是这个:
pointer++;
createProcesswithPipe(pointer, executes, execute);
似乎符合逻辑的权利?
现在我收到此错误:分段错误(核心转储)
现在我得到了一些信息,我也会分享一些信息,因为看起来Segmentation fault是这里的主要问题......所以这是一个递归函数,我输入的第一件事是打印出指针值(这只是检查它),当我的代码不包含递归部分时,当我注释掉这部分:
createProcesswithPipe(pointer, executes, execute);
开始时的printf工作并打印0然后我得到分段错误。
当它没有被注释掉时,它甚至没有打印出第一个0,它只是关闭程序并出现错误分段错误。
所以换句话说,当它没有被注释掉时,似乎整个程序在它到达代码的那一部分之前崩溃了?
答案 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);