【发布时间】:2017-02-05 15:00:49
【问题描述】:
在这个程序中有两个函数:一个是创建一个数组,另一个是删除它
#include "stdafx.h"
#include <iostream>
using namespace std;
void create_array(int **&arr,int nrow, int ncol) {
arr = new int*[nrow];
for (int i = 0; i < nrow; ++i){
arr[i] = new int[ncol];
}
}
void clean_memory(int **&arr, int nrow, int ncol) {
for (int i = 0; i < nrow; ++i) {
delete[] arr[i];
}
delete[] arr;
}
int main()
{
int nrow, ncol,element;
int **arr;
printf("Dynamic array \n");
printf("Write down number of rows and number of columns \n");
scanf_s("%d %d", &nrow, &ncol);
create_array(arr,nrow, ncol);
clean_memory(arr, nrow, ncol);
cin.get();
printf("Press Enter to exit \n");
cin.get();
return 0;
}
为什么我们将数组作为引用传递给create_array,但我们不能作为指针传递(没有&)?
为什么我不能这样写:
void create_array(int **arr,int nrow, int ncol)
clean_memory 也是如此
【问题讨论】:
-
您使用可变长度 C 数组而不是 std::vector 是否有原因?
-
@Corristo 可变长度 C 数组未在此处使用。
new是一个 C++ 特性 -
哦,确实:D该睡觉了。
标签: c++ arrays pointers reference pass-by-value