我有以下功能:
int do_something(...,const float writeArray[],...){
printf("%d",*writeArray);
return 0;
}
我如何使用这个功能是:
do_something(...,&data[0],...);
其中data [0] = 1
显然我的代码并不像这样简单,但这是问题的一个例子。当我运行do_something时,我得到一个非常大的数字的printf值,如23259894325.我做错了什么?我应该如何使printf 1像它应该的那样?
答案 0 :(得分:3)
printf("%d",*writeArray);
首先,你以一种非常奇怪的方式打印数组的第一个元素。如果您想这样做,请执行writeArray[0]
,以便其他人可以阅读您的代码。
其次,%d
用于打印整数,但writeArray
充满了浮点数。尝试使用%f
。您需要使用the right format string for each type。
do_something(...,&data[0],...);
这真令人困惑。你想要一个指向数组的第一个元素的指针?或者你只是试图通过整个阵列?如果你想传递数组(就像你后面的函数签名所示),只需这样做:
do_something(...,data,...);
当你将它们传递给函数时,数组会变成指针。
如果您确实需要指针,请更改您的第二个功能签名以显示:
int do_something(...,const float *writeArray,...){
答案 1 :(得分:1)
%d
指定有符号整数。请改用%f
。
答案 2 :(得分:0)
你正在传递一个浮动,你的printf正在尝试打印一个int