c语言 这个if(strcmp(p[i],p[j])>0)p[i] p[j]代表行数还是列数

c语言 这个if(strcmp(p[i],p[j])>0)p[i] p[j]代表行数还是列数为什么变成了二维?这个程序怎样执行的

字符串在C语言中本身就是一维字符数组.
所以 当存储多个字符串的时候就变成了二维数组. 每行都是一个字符串
于是
strcmp(p[i],p[j])
这样的比较两个字符串时, i 和j就是行号. p[i]和p[j]各代表一行.追问

请问这个程序怎样执行的

追答

1 主函数初始化二维数组,也就是五个字符串
2 调用函数f
3 函数f中, 执行排序算法. 对于前面比后面大的,交换值. 这样排序后,就是从小到大 字典序拍好的. 结果应为
aabdfg abbd abc cd decdb
返回到主函数, 计算p[0]的strlen 也就是aabdfg的, 输出为6

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-18
char p[10][100];  //如果是这样的定义的话
p[i],p[j]是代表二维数组的行指针。