第四天2017/03/31(下午2:结构体、数组)
生活随笔
收集整理的這篇文章主要介紹了
第四天2017/03/31(下午2:结构体、数组)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【作業】二級指針做輸出(在被調函數中分配空間,主調函數中使用)
//實現的目標:把兩個字符數組作為輸入,排好序保存到另外一個字符數組中。
#include<iostream>
using namespace std;char** sort(char Arr1[][10],int num1,char **Arr2,int num2)
{int len = num1+num2;
//在被調函數中定義變量Arr3,并分配內存空間,最后return返回給主函數main(即二級指針作輸出)char** Arr3 = (char **)malloc(sizeof(char*)*len); //定義Arr3,并分配內存空間for(int l=0;l<len;l++){Arr3[l] = (char*)malloc(sizeof(char)*100); //相當于動態分配len個數組memset(Arr3[l],0,sizeof(char)*100);}
//把Arr1、Arr2拷貝給Arr3int i=0;int j=0;for(i=0;i<num1;i++){strcpy(Arr3[i],Arr1[i]);}for(j=0;j<num2;j++){strcpy(Arr3[i+j],Arr2[j]);}//對Arr3進行排序for(int m=0;m<len;m++){for(int n=m+1;n<len;n++){if(strcmp(Arr3[m],Arr3[n])>0){//交換(方法一:動態數組的strcpy)//char ch[100] = {'\0'}; //靜態分配內存空間//strcpy(ch,Arr3[m]);//strcpy(Arr3[m],Arr3[n]);//strcpy(Arr3[n],ch);//交換(方法二:Arr3[i]作為指針,指向字符串,對指針進行交換)char *ch=NULL; //記得定義的時候進行初始化ch = Arr3[m];Arr3[m] = Arr3[n];Arr3[n] = ch;}}}return Arr3; //return返回給主函數main
}
void print_Arr(char **Arr3,int num)
{for(int i=0;i<num;i++){cout<<Arr3[i]<<endl;}
}
void free_Arr(char** Arr,int num) //釋放
{for(int i=0;i<num;i++){if(Arr[i]!=NULL){free(Arr[i]);Arr[i]=NULL;}}free(Arr);Arr=NULL;
}int main()
{char** Arr3 = NULL;char Arr1[][10] = {"Cc","DD","AA","FF","BBB"};char *Arr2[10] = {"QQQ","BBBB","HHHHH"};Arr3 = sort(Arr1,5,Arr2,3);print_Arr(Arr3,8);free_Arr(Arr3,8);getchar();
}
總結
以上是生活随笔為你收集整理的第四天2017/03/31(下午2:结构体、数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第四天2017/03/31(下午1:结构
- 下一篇: 第五天2017/04/06(上午:文件的