Estoy aprendiendo acerca de las cadenas en C ahora.¿Por qué Scanf no necesita un ampersand para cadenas y también funciona bien en printf (en C)?
¿Cómo es que para usar scanf para obtener una cadena que puede hacer
scanf("%s",str1);
y para printf que puede hacer
printf("The string is %s\n", str1);
Entiendo que para scanf es debido a que la cadena es sólo un personaje array, que es un puntero, pero para printf, ¿cómo es que puedes simplemente poner el nombre de la variable como lo harías con un int o float?
Más precisamente, una expresión del tipo de matriz se convierte implícitamente ("decae") en un puntero al primer elemento de la matriz en la mayoría, pero no en todos los contextos. Un argumento de función pasa a ser uno de los contextos donde ocurre la conversión. –