Structure Pointer Become Null at every call of the function

Write your question here.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  #include<iostream>
using namespace std;

struct node
{
	node* next;
	int data;
};

void insert(int item,node* head,node* last)
{
	static node* temp = NULL;
	if (head == NULL)
	{
		temp = new node;
		temp->data = item;
		temp->next = NULL;
		head = temp;
		last = temp;
	}
	else
	{
		temp = new node;
		temp->data = item;
		temp->next = NULL;
		last->next = temp;
		last = temp;
	}
}

void display(node* head)
{
	if (head == NULL)
		cout << "\nList is Empty\n";
	else
	{
		while (head != NULL)
		{
			cout << head->data << " ";
			head = head->next;
		}
	}
}



int main()
{
	static node* head = NULL;
	static node* last = NULL;

	insert(1, head, last);
	insert(1, head, last);
	insert(1, head, last);
	insert(1, head, last);
	insert(1, head, last);
	insert(1, head, last);
	insert(1, head, last);
	display(head);

	system("pause");
}
The functions receives copies of the pointers that you pass to them so any modifications to the pointers inside the function will not affect the original pointers in main. If you want the functions to be able to modify the pointers you could pass them by reference.

 
void insert(int item, node*& head, node*& last)
Last edited on
we can use pass by reference in pointers too thnx buddy
Yes, you can. A pointer is just a variable, like any other type of variable.
Topic archived. No new replies allowed.