我是非常新的C来自深度PHP&变量变量使生活变得轻松的BASH。我试图在C中理解如何在main()
中创建一个对象,然后调用一个适用于该对象的secondFunction()
,然后返回main()
将该对象合并回程序。
我可以编译脚本,但它会在segmentation fault
合并上抛出main()
。
在阅读了很多帖子和教程后,我想我在混淆何时使用myVar
,*myVar
,&myVar
scriptOne.c - > main()的
int main(){
GstElement *myPipeline;
GstElement *myBin;
doAddBin(myBin);
gst_bin_add (GST_BIN (myPipeline), myBin); // Segmentation Fault , main merge
scriptOne.c - > doAddBin()
void doAddBin(GstElement *MyBinAlpha){
char *bin_name;
bin_name="bin_0";
MyBinAlpha = gst_bin_new (bin_name); <--This is where object is produced
doWorkOnBin(MyBinAlpha);
ScriptTwo.c - &gt; doWorkOnBin()
void doAddBin(GstElement *MyBinBeta){
src1 = gst_element_factory_make ("filesrc", "idFileSrc");
gst_bin_add (MyBinBeta,src1);
return; // work now finished, return to main()
// where myBin now contains src1
所以我认为我没有正确使用*
,需要将其替换为&
,以阻止segmentation fault
感谢艺术
答案 0 :(得分:3)
在C中,所有函数参数都是按值传递的。因此,在函数外部不会看到更改函数参数的值。
然而,您可以使用&
运算符传递变量的地址,然后使用{{取消引用指针使用{{ 1}}运算符,以便您实际更改调用函数中的变量。
*