今天在写一个函数,就是要重新给一个指针分配一块内存。比如
void renew(int * array, int b)
{
delete [] array;
int size = 2*b;
array = new int[size];
memset(array,13,sizeof(int)*size);
}
void main()
{
int * array;
int size = 13;
array = new int [size];
memset(array,0,sizeof(int)*size);
renew(array);
delete [] array;
}
结果胡折腾了一会,企图修改数组的内容,实际上毛用都没。后来哥悟到了,具体参考这里。
不过哥哥有个比那文章稍好点的解决方法,那文章说真要用,就用int **。其实当然也可用一个指针的拷贝,这样具体代码都不用改,那么,请听题,如果修改renew函数的参数?
A) void renew( &(int * array), int b)
B) void renew( int &(*array), int b)
C) void renew( int &* array, int b)
D) void renew( int *& array, int b)
void renew(int *&array, int b)
void renew(int * array, int b)
{
delete [] array;
int size = 2*b;
array = new int[size];
memset(array,13,sizeof(int)*size);
}
void main()
{
int * array;
int size = 13;
array = new int [size];
memset(array,0,sizeof(int)*size);
renew(array);
delete [] array;
}
结果胡折腾了一会,企图修改数组的内容,实际上毛用都没。后来哥悟到了,具体参考这里。
不过哥哥有个比那文章稍好点的解决方法,那文章说真要用,就用int **。其实当然也可用一个指针的拷贝,这样具体代码都不用改,那么,请听题,如果修改renew函数的参数?
A) void renew( &(int * array), int b)
B) void renew( int &(*array), int b)
C) void renew( int &* array, int b)
D) void renew( int *& array, int b)
void renew(int *&array, int b)
没有评论:
发表评论