C语言问题

fenghuazhao 2003-08-28 08:51:53
一个小程序,大家帮忙看一下,本程序是完成极坐标到直角坐标的转换,而且输入
为极径和以度数为单位的极角,程序如下:
#include<stdio.h>
#include<math.h>
#define pi 3.1415926

void convert(float,float,float *,float *);

int main(void)
{
float A,r,*X,*Y;
printf("Enter the A and r:");
while(scanf("%f %f",&A,&r)==2)
{
convert(A,r,X,Y);
printf("%f\t%f\n",*X,*Y);
printf("Enter the A and r:");
}
return 0;
}

void convert(float A,float r,float * x,float * y)
{
*x=r*cos(A/180*pi);
*y=r*sin(A/180*pi);
}

本程序在TC下调试,出错为:
Warnning:possible use of "X" before definition in function main;
Warnning:possible use of "Y" before definition in function main;
Warnning:possible use of "X" before definition in function main;
Warnning:possible use of "Y" before definition in function main;

将两个指针改为普通的float 变量,函数传递用convert(A,r,&X,&Y),则不出错.
我想是不是定义指针的时候,只为指针变量赋初值,而对指针所指的量则不管,
那么为什么程序可以运行,并且结果正确。那么这样做有没有坏处,有什么坏处
呢?

谢谢!

...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbgbianbaogui 2003-08-28
  • 打赏
  • 举报
回复
同意
devzhao 2003-08-28
  • 打赏
  • 举报
回复
记得,指针一定要初始化后才能使用。
wangcx 2003-08-28
  • 打赏
  • 举报
回复
你当当定义了指针变量,但是要记住定义了不等于分配了空间,所以你那样当然不能用了。要想用的话,必须分配空间,然后指针指向分配的空间。
journay 2003-08-28
  • 打赏
  • 举报
回复
同意,初始化是个好习惯!
sandrowjw 2003-08-28
  • 打赏
  • 举报
回复
用完别忘了delete
delete x;
delete y;
sandrowjw 2003-08-28
  • 打赏
  • 举报
回复
两个指针x和y没有分配内存就用了啊!改成这样
convert(A,r,&X,&Y);

void convert(float A,float r,float ** x,float ** y)
{
*x = new float();
*y = new float();
**x=r*cos(A/180*pi);
**y=r*sin(A/180*pi);
}
tutu604 2003-08-28
  • 打赏
  • 举报
回复
up

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧