我有一个这样的虚函数,

void Charge(float p[15][11], int cantPol){
    cantPol = 0;

    for(int i = 0; i < 15; i++){
       for(int j = 0; j < 11; j++){
           &p[i][j]
       }
       cantPol++;
    }
    cantPol;
}


函数调用
Charge(p, cantPol)

我可以像使用矩阵一样使用指针返回变形值'cantPol'吗?

最佳答案

它们是功能上的两种传递:按值传递和按变量传递。

此处的cantPol通过值传递,该值表示函数完成后将不会更改。
基本上是因为它将仅创建变量的副本,而不更改变量的副本。

现在,当您分配一个指针时,您将告诉编译器这是变量(* cantPol)的地址,意味着cantPol的内存@。

因此,在函数内部,它将转到右侧@并更改内部的值:变量cantPol的值。在这里您可以恢复cantPol的预期新值。这意味着cantPol是通过变量传递的。

您应该省略最后一行

cantPol;


这没有任何意义。

因此,您应该将void更改为:

  void Charge(float p[15][11], int *cantPol)
    {
        *cantPol = 0;
        for(int i = 0; i < 15; i++){
           for(int j = 0; j < 11; j++){
               &p[i][j]
           }
           (*cantPol)++;
        }
        printf("\n");
        printf("\n");
        printf("%i\n",*cantPol);
    }


无需更改函数内的任何内容。

返回cantPol的另一种方法是将void转换为int函数,这意味着您将返回计算出的值。注意,这里不使用指针,但仍然可以获取计算值。

int  Charge(float p[15][11], int cantPol)
{
   cantPol = 0;

    for(int i = 0; i < 15; i++){
       for(int j = 0; j < 11; j++){
           &p[i][j]
       }
       cantPol++;
    }
    printf("\n");
    printf("\n");
    printf("%i\n",cantPol);

    return cantPol;
}

关于c - 如何从虚函数返回值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53533357/

10-10 18:51