我想編寫一個簡單的代碼來構建一個C語言的樹。以下是我的代碼片段。C編譯器問題C
#include<stdio.h>
struct node
{
int data;
struct node *left;
struct node *right;
};
int main()
{
struct node *root = newNode(5);
//struct node *root = NULL; working piece
//newNode(&root,5); working piece
if(root == NULL)
{
printf("No root\n");
return 0;
}
//root->left = newNode(4);
//root->right = newNode(3);
//root->left->left = newNode(2);
//root->right->right = newNode(1);
return 0;
}
struct node* newNode(int data)
{
struct node *temp;
temp = (struct node*) malloc(sizeof(struct node));
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return(temp);
}
當我嘗試返回結構節點地址,編譯器給我的錯誤
"rightNode.c", line 29: identifier redeclared: newNode
current : function(int) returning pointer to struct node {int data, pointer to struct node {..} left, pointer to struct node {..} right}
previous: function() returning int : "rightNode.c", line 12
但是當我評論這個struct node* newNode(int data)
並試圖定義通過傳遞的地址返回INT功能下面這個函數的結構,它不會給我帶來任何錯誤。
int newNode(struct node **root,int data)
{
printf("Inside New Node\n");
return 0;
}
據我所知,在C中返回結構地址到調用函數是合法的。
這與編譯器有關。
我使用cc編譯在UNIX環境
type cc
cc is a tracked alias for /apps/pcfn/pkgs/studio10/SUNWspro/bin/cc
下面是把我用來編譯cc rightNode.c
任何幫助,將不勝感激命令
@自我由於它不顯示我的任何錯誤。但我的疑問是,是否有必要聲明函數的原型?如果是這樣,爲什麼而返回int它不顯示任何錯誤 – arunb2w
原型,還包括對''malloc' –
@ stdlib.h' arunb2w編譯器會猜測該函數返回一個int,如果它不能「發現」它。 – this