C++二级指针
int printfArr(char **ArrayStr, int iNum)
{
int i = 0;
for (i = 0; i<iNum; i++)
{
printf("%s \n", ArrayStr[i]);
}
return 0;
}
//出错
int printfArr2(char myArray[10][100], int iNum)
{
int i = 0;
for (i = 0; i<iNum; i++)
{
printf("%s \n", myArray[i]);
}
return 0;
}
int sortArrayStr03(char **ArrayStr, int iNum)
{
int i = 0, j = 0;
char *tmp = NULL;
//排序
for (i = 0; i<iNum; i++)
{
for (j = i + 1; j<iNum; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j]) < 0)
{
tmp = ArrayStr[i];
ArrayStr[i] = ArrayStr[j];
ArrayStr[j] = tmp;
}
}
}
return 0;
}
void main()
{
int i = 0, j = 0;
char buf[100];
char **myArray = (char **)malloc(10 * sizeof(char *));
if (myArray == NULL)
{
return;
}
for ( i = 0; i < 10; i++)
{
myArray[i] = (char *)malloc(100 * sizeof(char));
if (myArray[i] == NULL)
{
return;
}
sprintf(myArray[i], "%d%d%d", i, i, i);
}
printf("排序前\n");
printfArr(myArray, 10);
sortArrayStr03(myArray, 10);
printf("排序后\n");
printfArr(myArray, 10);
for ( i = 0; i < 10; i++)
{
free(myArray[i]);
}
if (myArray != NULL)
{
free(myArray);
}
system("pause");
}
第一种内存模型
void ArrayPrint(char **ArrayStr, int num)
{
for (int i = 0; i < num; i++)
{
printf("\n%s", *(ArrayStr + i));
}
}
void ArraySort(char **ArrayStr, int num)
{
int i = 0, j = 0;
char *tmp = NULL;
for ( i = 0; i < num; i++)
{
for ( j = i+1; j < num; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j]) > 0)
{
tmp = ArrayStr[i];
ArrayStr[i] = ArrayStr[j];
ArrayStr[j] = tmp;
}
}
}
}
void main()
{
char *ArrayStr[10] = { "1111", "2222", "6666", "3333" };
printf("排序前:\n");
ArrayPrint(ArrayStr,4);
ArraySort(ArrayStr, 4);
printf("排序后\n");
ArrayPrint(ArrayStr,4);
system("pause");
}
第二种内存模型
int ArrayPrint(char ArrayStr[10][20], int num)
{
for (int i = 0; i < num; i++)
{
printf("\n%s", *(ArrayStr + i));
}
return 0;
}
int ArraySort(char ArrayStr[10][20], int num)
{
int i = 0, j = 0;
char buf[20];
for ( i = 0; i < num; i++)
{
for ( j = i+1; j < num; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j]) > 0)
{
strcpy(buf, ArrayStr[i]);
strcpy(ArrayStr[i], ArrayStr[j]);
strcpy(ArrayStr[j], buf);
}
}
}
return 0;
}
void main()
{
char ArrayStr[10][20] = { "1111", "2222", "6666", "3333" };
printf("排序前:\n");
ArrayPrint(ArrayStr,4);
ArraySort(ArrayStr, 4);
printf("排序后\n");
ArrayPrint(ArrayStr,4);
system("pause");
第三种内存模型
浙公网安备 33010602011771号