我创建了一个具有指针和整数作为参数的函数。它应该从链表中打印值,指针指向第一个对象。该函数如下所示:
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;
答案 0 :(得分:2)
您似乎没有定义talstrul
(或包含此处的定义)。也许它是struct
(但不是typedef struct
),您想要struct talstrul * lank
和struct 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;
}