私はC言語を新しくしており、リンクリストを学習しています。私はGCCコンパイラでLinux MintのCode Blocks IDEを使用しています。私は、リンクされたリストをトラバースするのに役立つ関数への構造体ポインタを渡そうとしています。ここに私の現在のコードは次のとおりです:Cの関数に渡された構造体ポインタは、前方宣言の後でも機能しません
#include <stdio.h>
#include <stdlib.h>
void gothru(struct node * Root);
struct node {
int data; //data in current node
struct node * next; //pointer to the next node
};
void gothru(struct node * Root){
struct node * conductor; //this pointer will be used to traverse the linked list
conductor = Root; //conductor will start at the Node
/* Conductor traverses through the linked list */
if(conductor != NULL){
while(conductor->next != NULL){
printf("%d->",conductor->data);
conductor = conductor->next; /*if current position of conductor is not pointing to
end of linked list, then go to the next node */
}
printf("%d->",conductor->data);
}
printf("\n");
if (conductor == NULL){
printf("Out of memory!");
}
free(conductor);
}
int main()
{
struct node * root; //first node
root = malloc(sizeof(*root)); //allocate some memory to the root node
root->next = NULL; //set the next node of root to a null/dummy pointer
root->data = 12; //data at first node (root) is 12
gothru(root); //traverse linked list
return 0;
}
私は、機能が最初に初期化された時と全く同じ形式で先頭に私の関数を宣言しました。私はそれが働く場合には、単純な変数への私の「gothru」関数の引数を変更しようとしている
|11|error: conflicting types for ‘gothru’
:しかし、まだ、私は次のエラーを取得しています。しかし、私が構造体へのポインタに戻ると、このエラーが出ます。
私は、このエラーをクリアするために関数を宣言する必要があると言います。私はそれを正確に行いましたが、それでも動作しません。どんな解決策ですか?
の場合はすぐに提供されるため、提供する必要はありません。 –
さて、ちょうどこれをしました。出来た!ありがとう! – ragzputin
@ Jean-FrançoisFabre正解ですが、害はありません。 :) –