-1
請看下面的代碼。我試圖通過調用insertNode()來創建一個鏈表,但爲什麼stNode沒有返回分配的臨時節點,而temp是返回相同的?爲什麼下面的temp和stNode顯示不同的值?
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* link;
};
struct node *insertNode(struct node*stNode,int data)
{
struct node* temp;
temp = (struct node*)malloc(sizeof(struct node));
temp->data = data;
temp->link = NULL;
if(stNode)
{
stNode=temp;
}
printf("stNode->data in insertNode is %d\n",stNode->data);
return temp;
}
int main()
{
struct node * list1;
struct node * temp;
temp = insertNode(list1,5);
printf("In main\n");
printf("temp->data = %d\t, temp->link = %u\n",temp->data,temp->link);
printf("list1->data = %d\t, list1->link = %u\n",list1->data,list1->link);
return;
}
輸出:
stNode->data in insertNode is 5
In main
temp->data = 5 , temp->link = 0
list1->data = 11865500 , list1->link = 10636298
以上顯示用於臨時和list1的不同。爲什麼這樣?
未定義的行爲,使用自動存儲持續時間未初始化的對象的值。 – EOF