麻烦理解下面的C指针

时间:2011-10-27 00:13:37

标签: c

我有以下功能:

int do_something(...,const float writeArray[],...){
printf("%d",*writeArray);
return 0;
}

我如何使用这个功能是:

do_something(...,&data[0],...);

其中data [0] = 1

显然我的代码并不像这样简单,但这是问题的一个例子。当我运行do_something时,我得到一个非常大的数字的printf值,如23259894325.我做错了什么?我应该如何使printf 1像它应该的那样?

3 个答案:

答案 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