если мы объявляем char * p="hello";
, то, поскольку он записан в разделе данных, мы не можем изменять содержимое, на которое указывает p, но мы можем изменить сам указатель.но я нашел этот пример в C Traps and Pitfalls Andrew Koenig AT & T Bell Laboratories Murray Hill, Нью-Джерси 07974
пример:
char *p, *q;
p = "xyz";
q = p;
q[1] = ’Y’;
q будет указывать на память, содержащую строку xYz.Так что p, потому что p и q указывают на одну и ту же память.
как это правда, если первое упомянутое мной утверждение также верно .. аналогично я запустил следующий код
main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0') ++*p++;
printf("%s %s",p,p1);
}
и получил вывод как ibj!gsjfoet
пожалуйста, объясните, как в обоих этих случаях мы можем изменять содержимое?заранее спасибо