您的位置:首页 > 其它

c总结9--- 二级指针使用三种模型之二(二级指针2)

2015-10-22 08:57 351 查看
我们来学习下,第二种模型, char *arr[] = {"dfe","sss","abc","eee"};

上代码:

int main()
{
int i = 0, j = 0;
char * tmp = NULL; //临时变量 用于参与排序使用    ①
//二级指针的第一种模型
//首先是一个数组 ----指针数组---数组中的每一个元素是指针  []的优先级比较高
char *arr[] = {"dfe","sss","abc","eee"};

//获取arr指针数组元素的个数
int num = sizeof(arr) / sizeof(*arr);  //或 sizeof(cArr)/sizeof(cArr[0]));

printf("排序前: \n");
for (i = 0; i <num;i++)
{
printf("%s \n", arr[i]);
}

//排序
for (i = 0; i <num;i++)
{
//因为要用第一个和后面一个比较 所有使用i+1即可
for (j = i + 1; j <num; j++)
{
if (strcmp(arr[i], arr[j])>0)
{
tmp = arr[i];	 //②
arr[i] = arr[j];
arr[j] = tmp;
}
}
}

printf("排序后: \n");
//排序后打印输出
for (i = 0; i <num;i++)
{
printf("%s \n", arr[i]);
}

system("pause");
return 0;
}


通过代码,我们就发现,第二个模型的使用和第一个有很多的不同,第二个模型在进行数据交换的时候,定义的是指针,如①的位置。交换的时候使用的数组赋值形式②。

当作为参数的时候,如何使用?代码如下:

/************************************************************************/
/* 函数名称:printArr
/* 函数功能:对二维数组中的元素进行打印
/* 参数1:	二维数组
/* 参数2:	数组元素个数
/* 返回值: 0正常  非0为不正常
/* 说明:
/************************************************************************/
int printArr(char ** pArr, int num)
{
//循环遍历的参数
int i = 0 ;

//结果返回值
int ret = 0;

if (pArr == NULL)
{
ret = -1;
printf("func printArr() 参数 pArr 不能为空  err:%d \n", ret);
return ret;
}

if (num <=0)
{
ret = -2;
printf("func printArr() 参数 num 不能小于等于  err:%d \n", ret);
return ret;
}

for (i = 0; i < num; i++)
{
printf("%s \n", pArr[i]);
}

return ret;
}

/************************************************************************/
/* 函数名称:sortArr
/* 函数功能:  对二维数组中的元素进行排序
/* 参数1:	二维数组
/* 参数2:	数组元素个数
/* 返回值: 0正常  非0为不正常
/* 说明:
/************************************************************************/
int sortArr(char ** pArr, int num)
{
int i = 0, j = 0;
char* tmp = NULL;

int ret = 0;

if (pArr == NULL)
{
ret = -1;
printf("func printArr() 参数 pArr 不能为空  err:%d \n", ret);
return ret;
}

for (i = 0; i <num; i++)
{
//因为要用第一个和后面一个比较 所有使用i+1即可
for (j = i + 1; j < num; j++)
{
if (strcmp(pArr[i], pArr[j]) > 0)
{
tmp = pArr[i];
pArr[i] = pArr[j];
pArr[j] = tmp;
}

}
}

return ret;
}

int main()
{

int i = 0, j = 0;
char * tmp = NULL; //临时变量 用于参与排序使用
//二级指针的第一种模型
//首先是一个数组 ----指针数组---数组中的每一个元素是指针  []的优先级比较高
char *arr[] = { "dfe", "sss", "abc", "eee" };

//获取arr指针数组元素的个数
int num = sizeof(arr) / sizeof(*arr);

printf("排序前: \n");
printArr(arr, num);

//排序
sortArr(arr, num);

printf("排序后: \n");
//排序后打印输出
printArr(arr, num);

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: