使用struct作为函数参数时出错?

时间:2014-02-13 23:24:01

标签: c function

我创建了一个具有指针和整数作为参数的函数。它应该从链表中打印值,指针指向第一个对象。该函数如下所示:

void printlist(talstrul *lank, int langd)
    {   int j;
        talstrul *temppek = lank;
            for(j=0; j<langd; j++)
            {   

        printf("%d\n",*temppek);
        temppek = temppek->next;    

        }
    }

我得到的错误是:

syntax error : missing ')' before '*'
syntax error : missing '{' before '*'

结构定义如下:

struct talstrul
{
    int num;
    struct talstrul *next;


};
typedef struct talstrul talstrul;

3 个答案:

答案 0 :(得分:2)

您似乎没有定义talstrul(或包含此处的定义)。也许它是struct(但不是typedef struct),您想要struct talstrul * lankstruct talstrul * temppek = lank;

这一行:

printf("%d\n",*temppek);

如果temppek指向struct暗示

,则必须出错

temppek = temppek->next;

答案 1 :(得分:1)

您的错误几乎肯定不在该函数中 - 您可能在页面的上方有一个未终止的块。

答案 2 :(得分:0)

您希望打印链接列表中的值,即结构的num条目。

printf("%d\n",temppek->num);

要捕获这些错误,使用gcc -Wall进行编译是一种很好的做法。


编辑:的确,此代码段工作正常,问题出在其他地方。

#include <stdio.h>
#include <stdlib.h>

typedef struct talstrul {
  int num;
  struct talstrul *next;
} talstrul;

void printlist(talstrul *lank, int langd) {
  int j;
  talstrul *temppek = lank;
  for(j=0; j<langd; j++) {
      printf("%d\n", temppek->num);
      printf("Illogical printing: %d\n",*temppek);
      temppek = temppek->next;
    }
}

int main (void) {
  talstrul *mylank = (talstrul*) malloc (sizeof (talstrul));
  mylank->num = 13;
  mylank->next = NULL;
  printlist(mylank, 1);

  free(mylank);
  return 0;
}