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

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

2024-10-13 10:38:38

字符串
在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
安静的河

2024-10-13 08:42:30

char p[10][100];  //如果是这样的定义的话
p[i],p[j]是代表二维数组的行指针。