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");

 第三种内存模型

posted on 2015-07-27 23:22  !无名之辈  阅读(468)  评论(0)    收藏  举报