C的新手,并努力使用*,&引用对象

时间:2016-11-30 17:54:06

标签: c

我是非常新的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

感谢艺术

1 个答案:

答案 0 :(得分:3)

在C中,所有函数参数都是按值传递的。因此,在函数外部不会看到更改函数参数的值。

然而,您可以使用&运算符传递变量的地址,然后使用{{取消引用指针使用{{ 1}}运算符,以便您实际更改调用函数中的变量。

*