Function pointers
Could you please explain the meaning of below declaration statement.
char (*pa())[4];
Please find the entire code below.
char (*pa())[4];
void main(){
char(*p)[4]=pa();printf("%d",**p);
}
char (*pa())[4]{
static char arr[]={'\11','\12','\13','\14'};
return &arr;
}
Signature · 2 lines
View this message in context: http://old.nabble.com/Function-pointers-tp27253432p27253432.html Sent from the linux-c-programming mailing list archive at Nabble.com.
[root@build ~]# cdecl
Type help' or ?' for help
cdecl> explain char (*pa())[4];
declare pa as function returning pointer to array 4 of char cdecl> explain char (*p)[4]
declare p as pointer to array 4 of char
cdecl>
Try the following code.
#include <stdio.h>
char (*pa())[4];
int main(){
char(*p)[4]=pa();
/*printf("%d",**p);*/
printf("%d %d %d %d\n",(*p)[0],(*p)[1],(*p)[2],(*p)[3]);
return 0;
}
char (*pa())[4]{
static char arr[]={'\11','\12','\13','\14'};
return &arr;
}Quoted 21 lines · On Thu, Jan 21, 2010 at 12:03 PM, kumar11 <[email protected]> wrote:
Could you please explain the meaning of below declaration statement.
char (*pa())[4];
Please find the entire code below.
char (*pa())[4];
void main(){
char(*p)[4]=pa();printf("%d",**p);
}
char (*pa())[4]{
static char arr[]={'\11','\12','\13','\14'};
return &arr;
}
--
View this message in context: http://old.nabble.com/Function-pointers-tp27253432p27253432.html
Sent from the linux-c-programming mailing list archive at Nabble.com.
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 3 lines · kumar11 wrote:
Could you please explain the meaning of below declaration statement.
char (*pa())[4];
"pa" is a function returning a pointer to an array of four characters.
C declarations work by declaring an expression involving the identifier as having a named type (in this case, "char").
"(*pa())[i]" is a character, for 0 <= i < 4.
Therefore:
"(*pa())" is an array of four characters.
Therefore:
"pa()" is a pointer to an array of four characters.
Therefore:
"pa" is a function returning a pointer to an array of four characters.
Signature · 1 line
Glynn Clements <[email protected]>
Quoted 9 lines · Glynn Clements
Quoted 3 lines · kumar11 wrote:
Could you please explain the meaning of below declaration statement.
char (*pa())[4];
"pa" is a function returning a pointer to an array of four characters.
You already have got the required answer from others.
C and function pointers can always be confusing. At times you think you have understood it throughly and but still not be able to decode some more complex declarations. (cdec can come to help but not always..at least not in a technical interview ) The best approach that I have come across is the Clockwise Spiral rule. (link :
http://www.c-faq.com/decl/spiral.anderson.html )
Hope this helps..
Thanks & Regards
Milind A Choudhary
http://www.csl.mtu.edu/~machoudh/
Signature · 1 line
Milind Arun Choudhary
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 4 lines · simon
char (*pa())[4];
is this mean that an pa function pointer with return value like a char a[4] and it's argument is nothing ?right?
Wrong.
1. pa is not a pointer to a function, it's a function which returns a pointer. "()" has higher precedence than "*", so "*pa()" is parsed as "*(pa())" (function returning pointer) rather than "(*pa)()" (pointer to function).
2. An empty parameter list "()" indicates that the function takes unspecified arguments. A function which takes no arguments has "(void)" as the parameter list.
Signature · 1 line
Glynn Clements <[email protected]>