Line 4 has the biggest problem. There should be a compiler warning being issued there. Normally something like incompatible pointer.
char *wordsArray[9] = {"word1","word2","word3","word4","word5","word6","word7","word8","word9"};
char *temp; // your array contains char pointers, not integers
temp = wordsArray[randNumber1]; // no need to take the address, you get the array element
wordsArray[randNumber1] = wordsArray[randNumber2];
wordsArray[randNumber2] = temp; // now this will work
As a learning exercise: try to forget about pointers:
typedef char * my_string_type;
my_string_type wordsArray[9] = {"word1","word2","word3","word4","word5","word6","word7","word8","word9"};
my_string_type temp = wordsArray[randNumber1];
wordsArray[randNumber1] = wordsArray[randNumber2];
wordsArray[randNumber2] = temp;