#include <stdio.h>
int main( )
{
char name[ ] = "Tim" ; // array initialized to string literal,
// array name variable stored in the stack frame
char * namePtr = "Tim" ; // pointer variable (stored in stack frame)
// initialized to a string literal (static data area)
// array name = address of the first element
printf ( "Addresses:\n \t Starting address of the Array (Stack Frame): %p \n " , name
) ; printf ( "\t Address of pointer variable (Stack Frame): %p \n " , & namePtr
) ; printf ( "\t Address (contents) in the pointer (String Literal " ) ; printf ( "location in the Static Data Area): %p\n " , namePtr
) ;
printf ( "First Characters in each: %c and %c\n " , name
[ 0 ] , * namePtr
) ; printf ( "Second Characters in each: %c and %c\n " , name
[ 1 ] , * ( namePtr
+ 1 ) ) ; printf ( "Third Characters in each: %c and %c\n " , name
[ 2 ] , * ( namePtr
+ 2 ) ) ;
printf ( "Strings in each: %s and %s\n " , name
, namePtr
) ;
printf ( "Can only change the contents of the array, not the string literal via a pointer\n " ) ;
name[ 0 ] = 'K' ; // change Tim to Kim
// can't change the string literal ... such as *namePtr = "Bob";
printf ( "Strings now in each: %s and %s\n " , name
, namePtr
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpCnsKICAgIAogICAgY2hhciBuYW1lW10gPSAiVGltIjsgICAgLy8gYXJyYXkgaW5pdGlhbGl6ZWQgdG8gc3RyaW5nIGxpdGVyYWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgbmFtZSB2YXJpYWJsZSBzdG9yZWQgaW4gdGhlIHN0YWNrIGZyYW1lCiAgICAKICAgIGNoYXIgKm5hbWVQdHIgPSAiVGltIjsgIC8vIHBvaW50ZXIgdmFyaWFibGUgKHN0b3JlZCBpbiBzdGFjayBmcmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemVkIHRvIGEgc3RyaW5nIGxpdGVyYWwgKHN0YXRpYyBkYXRhIGFyZWEpCiAgICAKICAgIC8vIGFycmF5IG5hbWUgPSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBlbGVtZW50CiAgICBwcmludGYgKCJBZGRyZXNzZXM6XG5cdFN0YXJ0aW5nIGFkZHJlc3Mgb2YgdGhlIEFycmF5IChTdGFjayBGcmFtZSk6ICVwIFxuIiwgbmFtZSk7CiAgICBwcmludGYgKCJcdEFkZHJlc3Mgb2YgcG9pbnRlciB2YXJpYWJsZSAoU3RhY2sgRnJhbWUpOiAlcCBcbiIsICZuYW1lUHRyKTsKICAgIHByaW50ZiAoIlx0QWRkcmVzcyAoY29udGVudHMpIGluIHRoZSBwb2ludGVyIChTdHJpbmcgTGl0ZXJhbCAiKTsKICAgIHByaW50ZiAoImxvY2F0aW9uIGluIHRoZSBTdGF0aWMgRGF0YSBBcmVhKTogJXBcbiIsIG5hbWVQdHIpOwogICAgCiAgICBwcmludGYgKCJGaXJzdCBDaGFyYWN0ZXJzIGluIGVhY2g6ICVjIGFuZCAlY1xuIiwgbmFtZVswXSwgKm5hbWVQdHIpOwogICAgcHJpbnRmICgiU2Vjb25kIENoYXJhY3RlcnMgaW4gZWFjaDogJWMgYW5kICVjXG4iLCBuYW1lWzFdLCAqKG5hbWVQdHIrMSkpOwogICAgcHJpbnRmICgiVGhpcmQgQ2hhcmFjdGVycyBpbiBlYWNoOiAlYyBhbmQgJWNcbiIsIG5hbWVbMl0sICoobmFtZVB0cisyKSk7ICAKICAgIAogICAgcHJpbnRmICgiU3RyaW5ncyBpbiBlYWNoOiAgJXMgYW5kICVzXG4iLCBuYW1lLCBuYW1lUHRyKTsKICAgIAogICAgcHJpbnRmICgiQ2FuIG9ubHkgY2hhbmdlIHRoZSBjb250ZW50cyBvZiB0aGUgYXJyYXksIG5vdCB0aGUgc3RyaW5nIGxpdGVyYWwgdmlhIGEgcG9pbnRlclxuIik7CiAgICAKICAgIG5hbWVbMF0gPSAnSyc7IC8vIGNoYW5nZSBUaW0gdG8gS2ltCiAgICAKICAgIC8vIGNhbid0IGNoYW5nZSB0aGUgc3RyaW5nIGxpdGVyYWwgLi4uIHN1Y2ggYXMgKm5hbWVQdHIgPSAiQm9iIjsKICAgIAogICAgcHJpbnRmICgiU3RyaW5ncyBub3cgaW4gZWFjaDogICVzIGFuZCAlc1xuIiwgbmFtZSwgbmFtZVB0cik7ICAgCgogICAgcmV0dXJuIDA7Cn0K