Not quite, since the compare function is going to be passed offsets into this array:
Code:
char *words[ ] = { "Then", "he", "shouted", "What", "I",
"didn't", "hear", "what", "you", "said" };
Reading from right to left, words is an array of pointers to char (char *words[]), and since arrays in C are passed as a pointer to the first element, that becomes char **words. So to get to a word in the array, you would need to dereference i and j.
Now if there were a way to pass compare() the addresses of array elements, then indeed what you propose would work. But in this case, somewhere in qsort the call to compare() becomes:
Code:
compare (words+offset1, words+offset2)