//arry:代表的是二维数组的首地址 也就是第一个内存块的地址
void PrintArryData(char arry[10][20], int cnt){
for (int i = 0; i < cnt; i++){
/*arry+i:指下一个内存块的地址 *(arry+i):指向下一个内存块数据
这里特别要注意一个事情:这里每个内存块的步长是20,如果是指针(指针数组理解一文章中),那么它的步长就是4
*/
printf("%s\n", *(arry + i));
}
}
//排序 内存块的交换
void SortArryData(char arry[10][20], int cnt){
char tmp[20];
for (int i = 0; i < cnt; i++)
{
for (int j = i + 1; j < cnt; j++){
if (strcmp(arry[i], arry[j]) < 0){
strcpy_s(tmp, arry[i]);
strcpy_s(arry[i], arry[j]);
strcpy_s(arry[j], tmp);
}
}
}
}
void main(){
//定义了一个二维数组 在栈里面分配了10个连续的内存块,每个内存块里面又分配为20个小内存块
char arry[10][20] = { "Rose_Grils1", "Rose_Grils2", "Rose_Grils3", "Rose_Grils4" };
PrintArryData(arry,4);
SortArryData(arry, 4);
printf("\n\n");
PrintArryData(arry, 4);
system("pause");
}
c语言之指针数组理解二
最新推荐文章于 2024-04-29 23:50:53 发布