mixing pointers and arrays

cobb at csu-cs.UUCP cobb at csu-cs.UUCP
Fri Jul 29 06:11:27 AEST 1983

Consider the two routines:

extern char *yytext;
main ()
stat ();
printf ("%s\n",*yytext);


char yytext [10];
stat ()
yytext [0] = 'y';
yytext [1] = 'e';
yytext [2] = 'a';
yytext [3] = 'r';
yytext [4] = '\0';

These two routines exist in different modules, and are compiled 
separately and then linked and loaded. However, every time I try to
execute the routine, I get an execution error. From reading the C
manual, the implication is that yytext is implemented as a pointer 
to some storage locations, and can therefore be treated as such. This
is reinforced by the legal program segment
     char ch [n];
     char *chptr;
     chptr = ch;
which results in chptr being assigned the base location of the array
'ch'. Why then do the first routines blow up?
                                            S. Cobb

More information about the Comp.lang.c mailing list