Почему если объявить строку как массив то программа работает как ожидается, но если строку объявить как указатель на char, то ничего не срабатывает и выводится неизмененное значение?
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void change_str(void(*fp)(char *), char * str);
void to_upper(char * str);
int main(int argc, char * argv[])
{
char str[] = "hello"; // char * str = "hello";
change_str(to_upper, str);
_getch();
return 0;
}
void change_str(void(*fp)(char *), char * str)
{
(*fp)(str);
puts(str);
}
void to_upper(char * str)
{
while (*str)
{
*str = toupper(*str);
str++;
}
}