cポインタによる演算結果の表現


  • JavaまたはPythonにおいて、関数/メソッドが予想される結果が得られない場合、プログラムは予想される結果を得ることができないことを、異常な方法で呼び出し者に通知することができる.
  • しかし、Cでは、このような方法で呼び出し者に知らせることはできない.一般的には、計算に失敗したことを不可能な値を返すことで知らせることができます.ただし、特殊な場合、たとえば、どの結果も予想値である可能性があります.この場合、呼び出し関数に異常があることを戻り値で通知することはできません.では、この時どうすればいいのでしょうか.Cがこのような状況に遭遇したら処理できないのだろうか.また、Cは、ポインタによって相を変えて結果を返す特殊な方法がある.関数の戻り値は、関数の計算が成功/失敗したことを示します.
  • 除算演算関数など、除算が0の場合、計算に失敗します.戻り値のみでは,得られた結果が正しいか計算に失敗して与えられた戻り値かは不明である.そこで,ポインタ方式で相を変えて結果を与えることができる.戻り値は、計算に成功したか失敗したかのフラグとして与えられます.
  • #include 
    
    int main(void){
        int a =9;
        int b = 2;
        int c;
        int ret = divider(a,b,&c);
        if (ret){
            printf(" %d/%d = %d
    "
    ,a,b,c); }else{ printf("%d/%d ==> 0, ",a,b); } return 0; } /** * @return 0 , ; 1, */ int divider(int a,int b,int *result){ int ret; if(b==0){ ret=0; }else{ *result = a/b; ret = 1; } return ret; }

    console log:
    9/0 ==>    09/2 = 4