再回首(二):对malloc分配内存方式的内容的两种排序方式

来源:互联网 发布:程序员求职成功 编辑:程序博客网 时间:2024/05/22 02:14
//强化指针数组char* a[30] 和 数组指针char (*a)[30]//()[]优先级  char *a() //函数名称{return NULL;}char (*a2)(); //是一个指针变量。。。。。。分配四个自己内存char  **getMem(int count){int i = 0;char **tmp = (char **)malloc((count+1)*sizeof(char *) );for (i=0; i<count; i++){tmp[i]  = (char *)malloc(100);}tmp[count] = NULL; return tmp;}void sortArray(char **myArray){int i = 0, j = 0;char *tmp;for (i=0; myArray[i] != NULL; i++){for (j=i+1; myArray[j] != NULL; j++){if (strcmp(myArray[i], myArray[j])){tmp = myArray[i]; //这个地方交换的是指针变量myArray[i] = myArray[j];myArray[j] = tmp;}}}}void sortArray02(char **myArray){int i = 0, j = 0;char tmp[200];for (i=0; myArray[i]!=NULL; i++){for (j=i+1;  myArray[j]!=NULL; j++){if (strcmp(myArray[i], myArray[j]) > 0){strcpy(tmp, myArray[i]);strcpy(myArray[i], myArray[j]);strcpy(myArray[j], tmp); //交换是buf的内容}}}}void  printfArray(char **myArray){int i = 0, j = 0;for (i=0; myArray[i] != NULL; i++){printf("%s \n", myArray[i]);}}void main(){char **pArray = NULL;pArray = getMem(3);strcpy(pArray[0], "bbbbb");strcpy(pArray[1], "aaaa");strcpy(pArray[2], "cccc");printf("排序之前\n");printfArray(pArray);//sortArray(pArray, 3);sortArray02(pArray); printf("排序之后\n");printfArray(pArray ,3);system("pause");}


由以上程序可知:

一、 由于malloc分配内存实在堆中分配的内存空间 ,可以修改内存区域的内容,因此 对内存区域的内容的交换既可以采用地址的交换,又可以采取内容的交换。

二、二级指针作为函数参数可以改变传入实参的一级指针。

0 0