Rule 1. Assign the priority to the pointer declaration considering precedence and associative according to following table.
(): This operator behaves as bracket operator or function operator.
[]: This operator behaves as array subscription operator.
*: This operator behaves as pointer operator not as multiplication operator.
Identifier: It is not an operator but it is name of pointer variable. You will always find the first priority will be assigned to the name of pointer.
Data type: It is also not an operator. Data types also includes modifier (like signed int, long double etc.)
You will understand it better by examples:
(1) How to read following pointer?
char (* ptr)[3]
Answer:
Step 1: () and [] enjoys equal precedence. So rule of associative will decide the priority. Its associative is left to right So first priority goes to ().
Step 2: Inside the bracket * and ptr enjoy equal precedence. From rule of associative (right to left) first priority goes to ptr and second priority goes to *.
Step3: Assign third priority to [].
Step4: Since data type enjoys least priority so assign fourth priority to char.
Now read it following manner:
ptr is pointer to such one dimensional array of size three which content char type data.
(2) How to read following pointer?
float (* ptr)(int)
Answer:
Assign the priority considering precedence and associative.
Now read it following manner:
ptr is pointer to such function whose parameter is int type data and return type is float type data.
Rule 2: Assign the priority of each function parameter separately and read it also separately.
Understand it through following example.
(3) How to read following pointer?
void (*ptr)(int (*)[2],int (*) void))
Answer:
Assign the priority considering rule of precedence and associative.
Now read it following manner:
ptr is pointer to such function which first parameter is pointer to one dimensional array of size two which content int type data and second parameter is pointer to such function which parameter is void and return type is int data type and return type is void.
(4) How to read following pointer?
int ( * ( * ptr ) [ 5 ] ) ( )
Answer:
Assign the priority considering rule of precedence and associative.
Now read it following manner:
ptr is pointer to such array of size five which content are pointer to such function which parameter is void and return type is int type data.
(5) How to read following pointer?
double*(*(*ptr)(int))(double **,char c)
Answer:
Assign the priority considering rule of precedence and associative.
Now read it following manner:
ptr is pointer to function which parameter is int type data and return type is pointer to function which first parameter is pointer to pointer of double data type and second parameter is char type data type and return type is pointer to double data type.
(6) How to read following pointer?
unsigned **(*(*ptr)[8](char const *, ...)
Answer:
Assign the priority considering rule of precedence and associative.
Now read it following manner:
ptr is pointer to array of size eight and content of array is pointer to function which first parameter is pointer to character constant and second parameter is variable number of arguments and return type is pointer to pointer of unsigned int data type.
How to read complex pointer
Arithmetic operation with pointer
Pointer to function
Pointer to array of function
Pointer to array of string
Pointer to structure
pointer to union
Multi level pointer
C tutorial
33 comments:
Very good information for the beginners to have better pictures of pointers...
Thanks for the valuable information, i feel in last example no. 6, one bracket is missing,
unsigned **(*(*ptr)[8](char const *, ...)
i feel the correct is
unsigned **(*(*ptr)[8])(char const *, ...)
thanx for dis info keep going.........
thankq..
Very useful thanks a loT!
thanx a lot.......
thanx a lot
nice work...............
keep it up..........
Good work !!!
it is necessary to know beginer of c programmer
thnk a lot keep it up...............
thanks a lot for the pictorial representation
really good 1
really good one !!!
babak barany ,it was really good ,thanks
thank u for posting this:)
Thanks.........
Thanks for the nice informations.These valuable notes are very hard to find out in programming books.
Thanks for such a nice explanation.
very very nice info
perfect! Very nice! Thanks a lot!!!
Perfect place for people who have pointers phobia.phobia no more remains....
really vry helpfull...thanx
Can Anyone help me with this:
"write the declaration for function 'foo' that takes a function pointer fp as input parameter that returns an integer and takes two (char *) input parameters. foo() returns a pointer to a function that returns an integer and takes two (char *) input parameters"
good
oohhhhh , thank you very much , you taught the pointer in a very easily manner .....VERY HELPFUL ,hats off
greetings from EGYPT
great work buddy u cleared my concept which i cudnt clear in whole of my college life... thanks
This is good information and really helpful for the people who need information about this.
content writing course in chennai
content writing training in chennai
German Classes in Chennai
IELTS Coaching in Chennai
spoken english coaching centre in chennai
best spoken english in chennai
Japanese Classes in Chennai
Spoken English Classes in Chennai
TOEFL Coaching in Chennai
German Classes in Anna Nagar
Spoken English Classes in Anna Nagar
great post on better pictures of pointers... , keep posting valuable information Java Classes In Pune
Useful post Thanks for sharing it that truly valuable knowledge about similar topic. python training in satara
Catch the latest ipl cricket news in hindi for all the updates and insights.
https://www.thewinestalker.net/2017/04/pasteur.html?sc=1724042284876#c3333784335727754536
Post a Comment