C typedef:指向结构的指针

犀牛256

为了个人娱乐,我正在学习C。我正在尝试编写矩阵计算标头。我有一个函数显示矩阵rmat_show(rmatrix * r),该函数应该打印整个矩阵。但是,似乎我的数据类型rmatrix无法很好地传递给此函数。

rmat.h:

// Matrix struct, m x n matrix. Pointer *value points to the contents.
struct srmatrix {
    int m,n;
    float *value;
};

typedef struct srmatrix rmatrix;

// Show the matrix
void rmat_show(rmatrix* r) {
    int i, j;
    printf("\nshow\n");
    printf("[%dx%d]\n",r->m,r->n);
    for (i = 0; i < r->m; i++) {
        for (j = 0; j < r->m; j++) {
            printf("%d\t",value[(j-1)*r->m+i-1]);
        }
        printf("\n");
    }
}

我将其作为主文件:

#include "rmat.h"

int main(int argc, char **argv){
    float val[] = {0.1};
    rmatrix *r = malloc(sizeof(rmatrix));
    r->n = 1;
    r->m = 1;
    r->value = val;
    rmat_show(r);

    return 0;
}

在rmat_show之后,我尝试使用另一个函数杀死te矩阵。它会产生相同的错误,即:'rmat_show'的参数1的类型不兼容,预期为'rmatrix',但参数的类型为'struct rmatrix *'。我尝试搜索“指向typedef的指针”和类似术语,但没有结果。我相信typedef声明不会保留到函数定义中。我在Windows 7上使用msys和mingw。

谢谢您的帮助。

编辑:添加了我误复印的typedef行。

ALK

struct srmatrix {
  int m,n;
  float *value;
};

... 

void rmat_show(rmatrix* r) 
{ 
  ...

  for (i = 0; i < r->m; i++) 
  {
    for (i = 0; i < r->m; i++) 
    {
      printf("%d\t", value[(n-1)*r->m+m-1]);
    }

    printf("\n");
  }

  ...

应该是这个

rmat.h:

#ifndef RMAT_H
#define RMAT_H

typedef struct rmatrix_s {
  size_t m, n; /* There is no need to define dimension as signed. */
  float * value;
} rmatrix_t;

void rmat_show(rmatrix_t * r);

#endif

rmat.c:

...
#include "rmat.h"

void rmat_show(rmatrix_t * r) 
{ 
  ...

  for (size_t j = 0; j < r->n; j++) 
  {
    for (size_t i = 0; i < r->m; i++) 
    {
      printf("%d\t", value[j*r->m + i]);
    }

    printf("\n");
  }

这样主要的将具有:

...
#include "rmat.h"

int main(int argc, char **argv)
{
  ...
  rmatrix_t * r = malloc(sizeof(*r));
  ...

要编译此代码,请执行以下操作:

gcc -g -Wall -Wextra -o main main.c rmat.c

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Typedef结构指针正确指向typedef结构(C)

来自分类Dev

指向C ++结构的指针

来自分类Dev

在C中使用typedef结构时,将指向不完整类型错误的指针取消引用

来自分类Dev

C ++:删除指向结构的指针

来自分类Dev

指向C中结构的指针

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

C结构,指向结构的联合指针

来自分类Dev

初始typedef结构指针(C / C ++)

来自分类Dev

C:typedef结构中的函数指针

来自分类Dev

C中的结构,typedef和指针

来自分类Dev

C:Typedef结构和指针异常

来自分类Dev

C ++-内存泄漏-指向结构的指针

来自分类Dev

创建指向结构的指针数组-C ++

来自分类Dev

在Python中访问指向结构的C指针

来自分类Dev

如何创建指向结构的指针数组?C ++

来自分类Dev

C函数返回指向结构的指针

来自分类Dev

指向结构内部的元素的指针(C)

来自分类Dev

在C中返回指向结构的指针

来自分类Dev

c ++从函数返回指向结构的指针

来自分类Dev

c指向结构的免费临时指针

来自分类Dev

指向c中的结构的sizeof指针

来自分类Dev

C ++在函数中使用指向结构的指针

来自分类Dev

C - 指向动态结构数组的指针

来自分类Dev

指向c中匿名结构数组的指针

来自分类Dev

结构名称的Typedef指向指针

来自分类Dev

MacRuby指向typedef结构的指针

来自分类Dev

如何在C#中创建“指向函数指针的typedef”?

来自分类Dev

c-指向结构内部结构的void指针

来自分类Dev

从 C 中的 Dart_NativeArguments 结构获取指向结构的指针