第一种内存模型:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *ArrayStr[] = { "ccccc", "bbbb", "aaaaa", "1111" };
printf("排序之前:\n");
printfArr(ArrayStr, 4);
sortArrayStr(ArrayStr, 4);
printf("排序之后:\n");
printfArr(ArrayStr,4);
system("pause");
}
int printfArr(char **ArrayStr, int iNum)
{
for (int i = 0; i < iNum; i++)
{
printf("%s\n", ArrayStr[i]);
}
return 0;
}
int sortArrayStr(char **ArrayStr, int iNum)
{
for (int i = 0; i < iNum; i++)
{
for (int j = i + 1; j < iNum; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j]) > 0)
{
char *tmp = NULL;
tmp = ArrayStr[i];
ArrayStr[i] = ArrayStr[j];
ArrayStr[j] = tmp;
}
}
}
return 0;
}
对参数的指针类型应该从两个角度来理解:
第一个角度,站在c/c++编译器的角度,如果是指针类型,c编译器只会给它分配四个内存单元
第二个角度,我们只有在使用指针所指向的内存空间的时候,我们才关心内存是一维的还是二维的。