Fastest to slowest (assuming all answers are workable):
3. set the address of one row equal to the other & vice versa
2. exchange the address of each element in the two rows
4. store the address of the rows in an array of pointers & exchange the pointers
1. exchange elements of array
the last (1.) is worst because you're actually moving each element's data...the data element might be huge...we don't know.
the first (3) is fastest because u only swap 2 pointers/addresses...done!
Before swapping addresses, the address must be saved. If you don't save the address, you'll loose the 1st address and you'll have 2 pointers to the same address...no good.
The wording is tricky here...some answers might not work if address saving is not implied. Thus, if #3 won't work, then #2 is next best, etc.
Important point: moving data is considered more expensive (slower) than swapping pointers to that data.
If this question is from your instructor, then he might want you to identify not only what is fastest, but which ones don't work, too.
...good luck.