我的应用程序中有类似于此代码的内容:
#include <stdlib.h>
#include <stdio.h>
typedef struct STH
{
double *buff;
int size;
}STH;
void fun1(STH *s)
{
fun3(s->buff, s->size);
}
void fun3(double *buff, int n)
{
int i = 0;
printf("N = %d\n", n);
for(i=0; i<n; i++)
printf("%d\n", buff[i]);
}
void fun2()
{
STH s;
s.size = 4;
s.buff = malloc(sizeof(double) * s.size);
fun1(&s);
}
int main()
{
fun2();
return 0;
}
当我尝试在fun3
打印缓冲区时,gdb
表示fun3
中存在错误。当我尝试打印(fun2
)s->size
的值时,会出现错误(而不是4错误打印出奇怪的数字......)
答案 0 :(得分:1)
buff [i]是一个浮点数,使用%f格式说明符打印它。即使用方法:
printf("%f\n", buff[i]);
而不是
printf("%d\n", buff[i]);
您还没有将数组初始化为某些值。它将包含(并打印)随机值。