用括号或星号在c++中声明一个双数组
Declaring a double array in c++ using brackets or asterisk
具有如下声明的变量:
双*变量;
我认为这和写差不多
双变量[];
然后介绍了一些工作方法;
如何可能获得二重数组的长度?我的意思是,我如何知道variable
的最后一个内化/访问/写入元素位于哪个位置?
主要区别在于:
double* variable;
是指在执行过程中动态分配的指针(例如通过new
或malloc
(,也可以指向双对象(那么,它不是"数组"(double variable[];
是一个静态分配的数组(因此它的大小是在编译过程中定义和固定的(。请注意,double variable[];
作为声明无效。必须指定数组的大小(例如double variable[20];
(
要回答您的问题:您无法确定double*
或double[]
变量的元素数,除非您自己将其保存在某个位置。
例如,如果要将double*对象传递给函数,则需要同时传递指针和大小(元素数(。则函数proptotype为( double* data, size_t size )
。
size_t mySize = 20;
double* data = new double[20];
callFunc( data, mySize );
delete [] data; // need to be deleted because dynamically allocated
或:
static const size_t mySize = 20;
double data[mySize];
callFunc( data, mySize );
// no need to be deleted because statically allocated
正如其他用户所评论的那样,更喜欢封装双*指针及其元素数量(以及其他属性(的std::vector:
std::vector<double> data;
data.assign( 20, 0.0 );
callFunc( data );
CCD_ 11然后可以使用CCD_ 12访问数据值并知道其大小。
注意:对于char*,约定是以一个特殊字符(