c语言指针函数相关问题

#include<stdio.h>
#include<string.h>
void main(){
char tmp[81], a[6][81] = {"chemical", "biotech", "materials",
"computer", "information", "public admin"};
int i,j,k;
for(i=0; i<5; i++){
k = i;
for(j = i+1; j<6; j++)
if(strcmp(*(a+j), *(a+k))>0) k = j;
strcpy(tmp, (a+i));
strcpy(a[i], a[k]);
strcpy(
(a+k),tmp);
}
for(i = 0; i<3; i++) puts(a[i]);
}
整个程序要怎么看 if(strcmp(*(a+j), *(a+k))>0) k = j;这个语句什么意思

字符串选择排序算法,strcmp() 是字符串比较函数,> 0 表示 字符串*(a+j) 大于 *(a+k) ,就让下标 k = j,直到找到最大字符串的下标,然后将它与第一个字符串交换位置,以此类推。 *(a+j) 等价于 a[j] 。

可以查看手册:c语言--指针声明 中的内容