Código
struct persona { char nombre[20]; char apellidoP[20]; char apellidoM[20]; char rut[10]; int edad; };
Segundo, en C, una vez pasada la declaración de las variables, no se pueden asignar las cadenas de esta manera:
Código
persona1.nombre = "Rodrigo"; persona1.apellidoP = "Saavedra";
En lugar de eso, deberías hacerte alguna función para copiar carácter a carácter o usar, por ejemplo, la función strncpy() de la librería 'string.h'. Quedaría algo así:
Código
#include <string.h> char nombre1[] = "Rodrigo"; // aqui si que se puede porque es en el momento de la declaracion
También puedes inicializar las variables del tipo de tu estructura al momento de declararlas:
Código
struct persona persona1 = {"Rodrigo", "Saavedra", "Pizarro", "ASDF-1", 23};
edito: mirando el código, sería una buena práctica que pasaras un puntero de tu estructura a la función 'desplegarValores' en lugar de la estructura en sí, ya que así evitarías que se hiciera una copia local de ella. Si además no quieres que en la función se modifique el valor de tu estructura, podrías pasarla con el parámetro 'const'. Te quedaría algo así:
Código
void desplegarValores(const struct persona *p) { }
Y en la función 'main' deberías llamarla así:
Código
desplegarValores(&persona1);
Un saludo.