Быстрый практический ответ
save_str = &str[i];
расширенный описательный скучный ответ
В "чистом с" и "с ++" есть функция для массивов и указателей.
Когда программист хочет адрес полного массива или первый элемент, оператор "&" не требуется, даже если некоторые компиляторы рассматривают его как ошибку или предупреждение.
char *myptr = NULL;
char myarray[512];
strcpy(myarray, "Hello World");
// this is the same:
myptr = myarray;
// this is the same:
myptr = &myarray[0];
Когда программист хочет адрес определенного элемента, тогда требуется оператор "&":
save_str = &str[i];
Я где-то читал, что эта функция была добавлена, в пурпуре.
Многие разработчики избегают этого и используют вместо этого арифметику указателей:
...
char *save_str;
...
// "&" not required
char *auxptr = str1;
for(int i=0; i < length_str1; i++)
{
// compare contents of pointer, not pointer, itself
if(*auxptr == str2[0])
{
*save_str = *auxptr;
}
// move pointer to next consecutive location
auxptr++;
}
...
Лично мне бы хотелось, чтобы "&" использовалось всегда и во избежание путаницы.
Приветствия.