Kalzzz

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int arrayInit(int size, int **outbuf)   //一维数组的初始化
 5 {
 6     int *a = NULL;
 7     a=(int*)malloc(sizeof(int)*(size+1));
 8 
 9     *outbuf = a;
10 
11     return size;
12 }
13 
14 int arrayEx(int *buf,int size,int preSize, int **outbuf)  //一维数组的扩容
15 {
16 //    int len = sizeof(buf)/sizeof(buf[0]);
17     int *a = NULL;
18 
19     a = (int *)malloc(sizeof(int)*(size+1));
20 
21     for (int i = 0; i < preSize; i++)
22     {
23         a[i] = buf[i];
24     }
25 
26     *outbuf = a;
27 //    free(a);              //不能在这里释放指针
28 
29     return size;
30 }
31 
32 void ArrayFree(int *buf)    //指针的释放
33 {
34     free(buf);
35     buf = NULL;
36 }
37 
38 void main()
39 {
40     int exlen=0;
41     int size = 0;
42     int *buf;
43     int *outbuf=NULL;
44     
45     size = arrayInit(10, &buf);  //数组的初始化
46 
47     for (int i = 0; i < size; i++)
48     {
49         buf[i]= i;
50     }
51 
52     for (int i = 0; i < size; i++)
53     {
54         cout << buf[i] <<endl;
55     }
56 
57     
58     size = arrayEx(buf, 20, size, &outbuf);
59 
60     cout << "扩后的数组内容" << endl;
61     for (int i =10 ; i < 20; i++)
62     {
63         outbuf[i] = i;
64     }
65 
66     for (int i = 0; i < size; i++)
67     {
68         cout << outbuf[i] << endl;
69     }
70 
71     
72     cout << "数组大小为"<<_msize(outbuf)/sizeof(int) << endl;  //_msize返回new,或malloc方式分配出来的内存大小
73     ArrayFree(buf);
74     ArrayFree(outbuf);
75     system("pause");
76 }

 

posted on 2020-06-30 23:22  Kalzzz  阅读(272)  评论(0编辑  收藏  举报