-1

ヘッダファイル: circlehead.h

#include <stdio.h>
void circle_Data(float *r);
#define PI 3.14f

C FILE1: circle.c

#include "circlehead.h"
void circle_Data(float *r)
{
    float ar=0,peri=0;
    ar= PI * (*r) * (*r);
    peri=2 * PI * (*r);
}

メイン関数circle_main.c

#include<stdio.h>
#include "circlehead.h"
int main()
{
    float r=5.24;
float  ar, peri;
    
    circle_Data(&r);
    printf("Area is %f", ar);
    printf("Perimeter is %f", peri);
}


ファイルを単一の実行可能ファイルにリンクしました。

gcc -c circle.c
gcc -c circle_main.c
gcc -o x_exe circle.o circle_main.o 
./x_exe

しかし、面積として出力を取得しています: 3.728 および周囲: 0.000 コードは正常にコンパイルされました。私は何を間違っていますか?

4

3 に答える 3

1

以下のようなことができます。この問題は、参照によって ar または peri を渡さないことが原因で発生します。したがって、コードはそれらを変更しません。

主要

#include<stdio.h>
#include "circlehead.h"


int main()
{
  float r = 5.24;
  float ar = 0;
  float peri = 0;
    
    circle_Data(r, ar, peri);
    printf("Area is %f", ar);
    printf("Perimeter is %f", peri);

    return 0;
}

ヘッダ

#include <stdio.h>
void circle_Data(float r, float &ar, float &peri);
#define PI 3.14f

#include "circlehead.h"
void circle_Data(float r, float &ar, float &peri)
{
    ar = PI * (r) * (r);
    peri = 2 * PI * (r);
}
于 2021-07-01T19:57:33.750 に答える