Structure Pointer Become Null at every call of the function

Mar 7, 2017 at 7:44am
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");
}
Mar 7, 2017 at 9:49am
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 Mar 7, 2017 at 9:49am
Mar 9, 2017 at 10:03am
we can use pass by reference in pointers too thnx buddy
Mar 9, 2017 at 12:32pm
Yes, you can. A pointer is just a variable, like any other type of variable.
Topic archived. No new replies allowed.