代码如下:
//打印
void PrintArray(char** parr,int len)
{
for(int i=0;i0)
{
char* pTmp = parr[i];
parr[i] = parr[j];
parr[j] = pTmp;
}
}
}
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
char* pArray[] = {"222222","1111","33333"};
//求数组长度
int len = sizeof(pArray)/sizeof(pArray[0]);
//打印
printf("--------排序前--------\n");
PrintArray(pArray,len);
SortArray(pArray,len);
printf("--------排序后--------\n");
PrintArray(pArray,len);
system("pause");
return 0;
}
运行结果如下:
内存模型如下:
pArray[0]、pArray[1]、pArray[2] 分别存着“222222”、“1111”、“33333”的地址,pArray 代表的是首元素pArray[0]的地址,pArray = & pArray[0],所以函数中可以用char** parr作为形参。
代码如下:
//打印
void PrintArray(char(*parr)[30],int len)
{
for(int i=0;i0)
{
char pTmp[30];
strcpy(pTmp,parr[i]);
strcpy(parr[i],parr[j]);
strcpy(parr[j],pTmp);
}
}
}
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
char pArray[][30] = {"222222","1111","33333"};
//求数组长度
int len = sizeof(pArray)/sizeof(pArray[0]);
//打印
printf("--------排序前--------\n");
PrintArray(pArray,len);
SortArray(pArray,len);
printf("--------排序后--------\n");
PrintArray(pArray,len);
system("pause");
return 0;
}
运行结果如下:
内存模型如下:
pArray 是数组的首元素的地址 相当于&pArray[0], pArray+1 相当于&pArray[1],与char **parry的内部结构不一样步长也不一样所以在传参数的时候不能用char **parry。
代码如下:
//打印
void PrintArray(char**parr,int len)
{
for(int i=0;i
运行结果如下:
内存模型如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)