39

Pointers in c

Embed Size (px)

DESCRIPTION

Pointers in C, a detailed overview.

Citation preview

Page 1: Pointers in c

m

������������� �������������������������� �������������

m

���������� ����������

���������� ���� ����� �����

������������������

������������� �������������������������� �������������

Page 2: Pointers in c

�������

������������������������� �� ����!���������"����#�

�������!!�����������������$����%����������!�����&���

���'��������������� �����������!� �������(���!��������

����������������������

���������%��'����(����!��������(����)��������!����$�����$

��������(�����!�������������������������������(���$�� ���

�������������������������'����(�������������!��

*�����������

���+����,-.

���/+� ��.

+� ��,�+����.

0� �������$����(�'������������������� ��������!�����

1

Page 3: Pointers in c

ï

�����(�'���������$�������������%����������������� ���

���������&��������������������!�'����(��������2+����#�

0����������1�� ��������$ ����%������������������������!�

!������'����(��������2+� ��#�3����-�� ��������$���!������

'����(����������&�� ������������������������������'����(��

2+� ��#�

����������� ������'����(���

-

�����

����

�������������

������ ����

������������1445

���

����

p�������������������

������ ����

�������������

Page 4: Pointers in c

�����������������(�'��6!��������������������������������

!����������� ��$ ���������������������������'����(��������

2+����#�����'����������2-#��'��������������������

21445#�0��������!������'����(�������2+� ��#�����'����

���������������������������������'����(��2+����#�����

�����������������������27445#�

�� ����!��������'����(���'��������������������������

���������������������!!�����!������������������2�#�

�������!!���

!�����89�����:�����+����,;��<����,;�=$�+����$

+����>.

!�����89�����:�����/+� ��,;�=$�+� ��>.

!�����89<�����������/+� ��,;�=$+� ��>.

!�����89<����!��������������/+� ��,;�=$/+� ��>.

����� ��� ���'�����6!������������������(�'����������

Page 5: Pointers in c

h

����'������������������2!�����8>#�����������!���������

����� �������!!����������������2;�#���2;�#�?���2;�#

��������������������'����(��#��������������$(��������

�������������� ����� ��(�������������������!�����

��!��������������2�������#�!������ ���'����(����������

1�� �����������;� �����������������������'��������������

����������������������������'����(��2+����#�

Ä����1�� ��������$ �����@�������������� ��������$Ä ���

��!����������������������������������!������'����(�������

�2+� ��#�������(�'�������������������������!���

����������2;�# ���������������������������'����������

��!��������������2�������#�!������ ���'����(�������

Page 6: Pointers in c

-

����-�� ��������$���'�������������������������������������

!������'����(��������������������'�������������������

���������!������'����(���%�����������������������������

'�����

�������������������5�� �����������������!������'��������

���'������ �������!������'����(��!���������(���!������

����!�������2/#8�������������>��������!������'����

����������!���������������(�!�������

?������������(�'�������� ���'�������!��������!������

���!������'����(���!!�����(��������6����:����'�������

��������������������������� ����

Page 7: Pointers in c

r

?���������(�'������������������'�������-1)(������

��������������!���@���������������������!������!��������

*�'�AA���!���������-1)(�����������

�����

� ����

Page 8: Pointers in c

:������������!�����������������!������'����(�����

�������������������

�������!!���

'��� �! ��8���/+����B$���/+����C>

D

���+����!.

+����!,/+����B.

/+����B,/+����C.

/+����C,+����!.

E

������ ��������� ���'��������6!��������������(�'���!!���

Page 9: Pointers in c

�����(�'���!!��$ ���'���������������2 �! ��8>#��'���

� �!��������$����������������!��������!�����!�������������

�2+����B#$���2+����C#�

3!�������������������������������� ���'�����������!���

��������������2����8>#��������(�����������������

����������2����#�����'�� ���������$������� ���

2�������#�!�������.

�! ��8�+� ��B$�+� ��C>.

?���������(�'�������������������'��������������������

����������������������'����(���2+� ��B#���2+� ��C#�!���

������������������������ ����������������������!��������

��������2+����B#���2+����C#���!������������������

Page 10: Pointers in c

m�

��������������'���������!������������'�����������������������

����������'��

�� �����'���������������$��������������'����(��2+����!#����������

����1�������������'������������������������������!������

'����(��2+����B#��������$�����������������'����(��2+����!#�����

�����'�����6����������-��$ ���'�����������6�!������'����(��

2+����C#�������������������!������'����(���2+����B#�3�������

��������2+����B#������������(����'�������������������'����(��

2+����!#�

���������������������������%�(�3����������6�������!������$���

���������������� ���� �!!�����'����!�������(�������������

����������!������'����(�� ��������������

Page 11: Pointers in c

mm

��������������8>

1-

+� ��B

1445 �+� ��B

-1

144F �+� ��C

3����������� �! ��8�+� ��B$�+� ��C>

-1

+� ��B

1445 +����B

1-

144F +����C

+� ��C

+� ��C

/+����B /+����C

Page 12: Pointers in c

m�

�����*�������

3 ���������� ��������(�'��������$���������2/#

�!���������(�����������2���'�������������������������G#

�����$��������)��2�#�!���������(�����������2���

����������'����G#�

�� ���������(���������������������������������!������

��!�����������3 ���� �!������'����(���������������

�������(��������!�'����(���$���������$������������������$

�� ���(���������!����'������������!������$�����!������$��

���������!�������H�����������!�!������(�����������������

2����#$2���#$���2����#!���������������������(�������������

(�� ���������!���!������$ �����������!���������� �����!�

��������������&����������������������������

Page 13: Pointers in c

�����(�������� ������(�� ��������!������������������

������6������� ����������2*�����#�0��������*�����

���� ������!���(�����������m(����������!���������������

������������7(��$mF(��$-1(������(� ������������7(��

����$mF(��������-1(�������������������3�('����

�����!������ ���-1(������(���� �����������mF(������

(��?���������!�������(�����!��������!����!�����

�������������������!�������

���������$�������������������������������������������$

��� ���������� �����������������!��������������

:���!!��$����������(� �����������!�������14(��

�������������18�����!� ��14>�������������������m����

�������

�������� �����(���� ���������������(� �����.

Page 14: Pointers in c

m�

� ��

�� ����

�������� ������� ��� ����

����

�� ��

��������

7477 7(�� 14(�� m�� I���

747F mF(�� 14(�� m�� I���

7417F mF(�� 15(�� mF�� I���J ��������

74-7F -1(�� -1(�� 54KF�� I���J ��������

7457F -1(�� -1(�� 54KF�� I���J ��������

������ F5(�� F5(�� 1L55 �� I���J ��������

��������(�'���(��8(�����*��������������>$�������������������

�����7417F���(����� ���� ��������mF��������������m��

�����������?����� ������!��2�6!�����������#���2�6������

������#����������!������������'��!���������!!������� ���

�������2H��-7F��6�#����!�������������������!������

�������

Page 15: Pointers in c

mh

I���������!!���������'��*�����������������!��������mF

(������(�����14(�������(� ����(����������������

���m457MNF(���8����1��!� ��14>����������������!������

��mF)(��� O��������?� �'����mF)(��������������6�'����

�������(������ ���(�FM$M-M����������������(��������$

���� ��������#�2����������#���2���������#��

���%��������

���������������������'������������(������������

���!�����F5�(8FM$M-M>���������H�����������������������

����� ��(���� ���������������(�� ������6�������'��(��

(�mF����������������������������� �������������

(����$ ��������������������������������������������

�������������(�����

����� �����!����������!�����������

Page 16: Pointers in c

m-

���

���� �

������

�������

�������

Page 17: Pointers in c

mr

3!���P3'������������������$���������������

46�4444 �������������'���������m� �P3(���������(�'�

�������467444�?������������������������m� 5(��'����

���(�����������

�� ��������������23#�����!����������������246�444�467444#$

����������'�������������������� ������������������

��������(���!�� ��������������������������(��������

46�4447444���(�����-1(��������

��!!���������6�

�������/��.

��,46�4447444.

0����������������246�4447444#�����'��������������23#�

Page 18: Pointers in c

m�

3������(�'���!!��$�2���!������#��� �����������-1(��

!����������������(���2������#���2�����#�

32?���!������#����-1(��!�������������(���2������#���

2�����#������!����(������������!�����������������������$��

��������������!������������!����� �����2���#!��������!�

'����(���������������������������!�����������-1(��'����

�������������������$�����������������2����#!�������������

�����������&���

3����!�����������mF(��������������������������������

2����������#�������������������������2����������#�������

������������!���$ ������������!�����������mF(������

!�������

Page 19: Pointers in c

m�

�����

���

�����

�������

��

�������

��������� ������

���� ���� ���� F5��

����� ���� ���� F5�� F5��

������ ��� ���� m�� F5��

���!��� ���� ��� F5�� m��

:���� ��� ��� m�� m��

?��� ��� ���� m�� ��������m

������

����� �����(���� �������������������������!���

!������$��

Page 20: Pointers in c

��

����� �� ������������� �� � ��������������

3*����I����������!!�������������!� ������(����� ������

�!��� �������������!����������0� �������������

����� ����������

ù ������!�� ������������������!�����

���������������!� ���������������!��'����������

3������������������'����(�����������!����������

���������

H6�

��� �! ��8���/+����B$���+����C>

Page 21: Pointers in c

�m

ù ��� ����"�������!�p�����

?���������!!�������������!���!���������������������

������'����������(������������������������������

H6�

���/����m8>

D

���+����,14.

������8�+����>.

E

�����(�'���!!�������������$������2����m8>#��'������

���������������(����'�����������������!��������!��

��������������!���$���'���m� ������������������

��������&���������'����(���2+����#��������&��(����'����

214#�

Page 22: Pointers in c

��

?����!�������������������������'����(������(�����

�������������������������'�����

ù ����3�����������������

3���������(�!���������������������������������(��

�������������������������������������������(���������

����������������������4�� ����6����������!��������

H6�

���+�3��QMR,D4$m$1$-$5E.

�������8>

D

!� ��3��8�+�3��>.

������4.

E

Page 23: Pointers in c

�ï

� ���������������������

�������� ������������ ��������� �!�"#��������$

%

&����������' ���������#����(� '������������������������)���*+,� ����-��h#�����������

� �(�����)������,����.� �/�0���.��������1�����������(��������������� �(�����

������� ��'����� .�� ����(����������-��� ����� ��������'��� ���.�����(����/

2������ �������� ������� ������ ����������������� ������ �������.� ��������

�(����������������-������������(������� ��������'������)������,��������

. �.������������.� ��1����������������������� ������������ ��������/�

&��.����� ���� ������������.� ���������.�� ���� 1��������1��.������������ �����

���(��������/

0��������������#����. �.��� �������������#�����������(���� ���������. ��(� ���

��� ��� .�� �� ����������-�/�3 ����'��������(������� /�� ./ ���� ������ ���������1��

.�����.�����1� �������������� �(��� �����4���'����.������(�m� ����� ����

����'��/

Page 24: Pointers in c

��

3�����������������������������������$

H6��������*�������3����

���+�3��QMR,,D4$m$1$-$5E.

_ m � � �

���- ���� ��m� ��m� ��m�

���*�+ ���*m+ ���*�+ ���*ï+ ���*�+

��#�

����������� �5����$

þ__�

������

m���

Page 25: Pointers in c

�h

H6��*��(��*�������3����

���+�3��Q-RQ1R,,DD4$mE$D1$-E$D5$MEE.

3����������������������@��.

� m � � � �

+�3��QmRQ4R+�3��Q4RQmR+�3��Q4RQ4R +�3��QmRQmR +�3��Q1RQ4R +�3��Q1RQmR

144F 1447 14m4 14m1 14m5 14mF

3���!������'����(����������$

���/+� ��3��,�+�3��Q4RQ4R þ__�

������

m���

Page 26: Pointers in c

�-

3�(�'�����������������������@��$�������!������'����(����

����������������(���������� �������������'���������

�����������$

���/+� ��3��,�+�3��Q4RQ4R

þ__�

������

m���

���*�+*�+� ��������6�������-�� ����� /�. ������6���

������-�6�����6���6��

�����m��

�/�/�����������

���*�+*�+

��m�

Page 27: Pointers in c

�r

���������

ù ������*�������3����

+�3��Q1R,/8+� ��3��A1/�&��������(����>

,/8144FA1/1>

,/814m4>

�������'�����1�

ù *��(��*�������3����

+�3��Q1RQ4R,/8+� ��3��A1/�&���������������A4>

��

+�3��Q1RQ4R,/8/8+�3��A1>A4>

,/8+�3��Q1RA4>

,/814m5>

����'�����5

3*��(����������3������������!� �������� ����������)����������

������

Page 28: Pointers in c

��

I�������������������������

?��� � �����������������'�����������!��������������(

������.

ù3!���������������

���/+����,����m8>.

���/����m8>

D

��������+�3��QRQR,DDm$1E$D1$-EE.

������8���/>+�3��.

E

�����(�'���!!��������'������!������ �������

��������&��������������!��������!���������'����(���+�����

Page 29: Pointers in c

��

I�������������������������

?��� � �����������������'�����������!��������������(

������.

ù3!���������������

���8/+����m>Q1R,����18>.

���/����18>Q1R

D

��������+�3��QRQR,DDm$1E$D1$-EE.

������+�3��.

E

�����(�'���!!��������'������!������ �������

��������&��������������!��������m)*3��������!��������

������+����mQ1R�

Page 30: Pointers in c

ï�

I�������������������������

?��� � �����������������'�����������!��������������(

������.

ù3!���������������

���8/+����1>Q1RQ1R,����-8>.

���8/����-8>>Q1RQ1R

D

��������+�3��QRQR,DDm$1E$D1$-EE.

������8���8/>Q1RQ1R>+�3��.

E

�����(�'���!!��������'������!��������(���������

1)*3����$ ���������������&��������������!��������1)*

3����'����(���+����1Q1RQ1R�

Page 31: Pointers in c

ïm

3������ ������

����� ������'����(���� ��������������$�����������!������

���%������������������������������

H6�

���/+�3��Q1R.

���+����m,m4$+����1,14$+����-,-4.

+�3��Q4R,�+����m.

+�3��QmR,�+����1.

+�3��Q1R,�+����-.

���'�������(����������������2������!#$������ �

Page 32: Pointers in c

ï�

��������'������������������!������

���8+�,4.+�S,1.AA+�>

!�����89+�3��Q;�R,;�=$+�$/+�3��Q+�R>.

3!����������� ��������!������'����(�� ������������!������

'����(���.

���///+� ��$//+� ��m$/+� ��1$+����.

+����,m1.

+� ��1,�+����.

+� ��m,�+� ��1.

+� ��,�+� ��m.

!�����89;���;���;���;�=$+����$/+� ��1$//+ ��m$///+ ��>.

Page 33: Pointers in c

ïï

�����������������3����

�������������������m(������&������@�������������

����������!�����������������������

������*�������3����

����+��3��QMR,,D24#$#m#$#1#$#-#$#T4#E.

_ m � � ��

���- ���r ���� ���� ��m�

�.��*�+ �.��*m+ �.��*�+ �.��*ï+ �.��*�+

Page 34: Pointers in c

ï�

?������(�'���������������$ ��������6!�������!������������

��������� ���������&����������������������������

������(���!���������������!������'����(���('�������

�����������!��$

����/+�� ��,�+��3��.

�� +�� �������(�������������������������������������

2+��3��#����+��3��Q4R�

þ__�

�.��

m���

Page 35: Pointers in c

ïh

�78������ ����9���.�����

3����������(��� ����� ����������. �.��� ���8�������������

�����(������:���������� /���.�����#

� m � � � �

+��3��QmRQ4R+��3��Q4RQmR+��3��Q4RQ4R +�3��QmRQmR +�3��Q1RQ4R +�3��Q1RQmR

144F 144N 1447 144K 14m4 14mm

&�������8���������'������������#

.����.��*+*+� ���)�,#,m,%#�)�,#,ï,%#�)�,#,h,%%$

;�������. ��� ����(�� ��������'���1����'�#

.�����.��� �5�.��$

Page 36: Pointers in c

ï-

3��(������� ����

;��.��,��������-�������(�����'���1����� ������(���/� ��������.�

��-�� ������(���<� 1����-�/�0��������.���� ��� ����#�1��.���� �� �

:��������������� �� 1�#

=�/

.�����*+� ��&��"$

.������m*-+$

��m� ���$ >>� ��������(������ ���� 1��/

;������$

.�����.��� ��&��"$

.�����.��m$

�.��m� ��.��$� >>����(�������� 1��

Page 37: Pointers in c

ïr

3������ ��������������

?��������3������!�������������������������� ���'����

'��������(���������������������

H6�

����/+�� ��QR,D93(�=$=*��=E

3��������'����'���� ���'�����������

!�����89;��;=$+�� ��Q4R$+�� ��QmR>.

3��!����������!����������$������!������������������������

������������$ ������������������������QR$ �������

�6!��������������������������������

Page 38: Pointers in c

ï�

��������� �������

�������������������������������������������(������������!��

0������!���������������������������������!�!������'����(���

H6�

�����3(�

D

���+����.

�����+����.

����+�����.

E.

��� �����3(�/+ ��.

�����3(��(�,Dm4$-�m5$#3#E

+!��,��(�.

Page 39: Pointers in c

ï�

��������(�'�������� �����������������������!�!������

'����(���2+ ��#���������������������������������������

'����(���2�(�#�

����������'����.

!�����89;���;���;�=$+ ��)U+����$ ��)U+����$ ��)

U+�����>.

?�����(�'�$ ��� ����!������'����(������������������

!������2�#���$ ���������2)U#���� �!�������

3�������� ����!���������'�����������������������!�

����������������������� ��� ������� ������������'�����

����(�����(�������������������������������������������