Если я делаю т ++; и * t = 'a'; затем вернуть s, он вернет адрес для
первое место s, но с измененным содержимым, или оно вернет
адрес с оригинальным контентом?
Я полагаю, что ваш вопрос предполагает что-то вроде этого:
char s[] = "abcde";
char *t = s;
t++;
*t = 'a';
Здесь у вас есть одна строка и два указателя, которые изначально оба указывают на начало строки. В третьей строке вы изменяете один из указателей, чтобы он указывал на следующий символ. В четвертой строке вы изменяете данные в этом месте. Поскольку s
указывает на те же данные, а данные модифицируются, строка, на которую указывает s, изменится.
printf("s is: %s\n", s"); // s is: aacde
printf("t is: %s\n", t"); // t is: acde
Кстати, нет лучшего способа научиться этому, чем писать небольшие тестовые программы и играть с ними. Хорошая книга объяснит, как все должно работать, но игра с кодом - это то, как вы начинаете понимать код и верить тому, что говорят вам книги.