结构,指针,通过指针获取字段值

时间:2014-01-05 18:44:46

标签: c pointers struct

我的应用程序中有类似于此代码的内容:

#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中存在错误。当我尝试打印(fun2s->size的值时,会出现错误(而不是4错误打印出奇怪的数字......)

1 个答案:

答案 0 :(得分:1)

buff [i]是一个浮点数,使用%f格式说明符打印它。即使用方法:

printf("%f\n", buff[i]);

而不是

printf("%d\n", buff[i]);

您还没有将数组初始化为某些值。它将包含(并打印)随机值。