如何解决为什么我没有使用 c 中函数中的指针获得该程序所需的输出?
头文件: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 代码编译成功。我做错了什么?
解决方法
您永远不会在 ar
中分配 peri
或 main
任何值,因此这些变量不会都被分配任何值。在别处分配具有相同名称的不同变量并不重要。 (如果确实如此,该语言将几乎无法使用。)
您的想法是正确的(传递一个指针),但您以错误的方式使用它。
问题是你传递了一个指向不会改变的变量的指针,并且没有传递指向你所做需要改变的变量的指针由 circle_Data()
更改。这个版本应该按照你想要的方式运行。 ar
本地的 peri
和 main()
的值由 circle_Data()
修改,然后可以打印正确的值。
请注意,circle_Data()
获得了 r
的copy,它可以修改它,但这不会改变 {{1} 中 r
的值}.它是一个完全独立的变量,就像您的第一个版本中的 main()
和 ar
一样。
peri
,
您可以执行以下操作。问题是由于您从未通过引用传入 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 &peri)
{
ar = PI * (r) * (r);
peri = 2 * PI * (r);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。