问题:定义函数f(),其形参是float型,现在想通过函数f()调用先前定
义的整型数,通过调试总结出如下一些经验,有的地方尚需要官方
或者资深高手给予指点。
#include "stdio.h"
#include "stdlib.h"
#define N 8
float Buf[N];
unsigned int *Ptr;
void f(float x[N])
{
int i;
for(i=0;i
{
x[i]=x[i]*i;
printf("%f\n",x[i]);
}
}
void main(void)
{
int i;
Ptr=NULL; //NULL在文件stdio.h中定义过。
Ptr=(unsigned int *)malloc(N*sizeof(int)); //注意一定是要开辟N个int型的字节长度,不然编译会出错。
//printf("%ld\n",Ptr);
for(i=0;i
{
*(Ptr+i)=i;
}
for(i=0;i
{
Buf[i] = *(Ptr+i);
}
//下面调用函数f 处理外部RAM中的数
f((float *)(Ptr)); //请问:这样调用函数有问题吗
//f(Buf); //这样调用则不会有问题。
}
说明:若这样调用函数:f((float *)(Ptr)),则输出结果如下图A1:
A1
若这样调用函数f(Buf),则输出如下图A2所示:
A2
这说明像f((float *)(Ptr))这样调用函数是有问题的,具体原因就慢慢体会吧,我暂时也不能明确道出个所以然来。