具有这样声明的变量:
双*变量;
我认为这与写作完全一样
双变量[];
然后一些方法在起作用;
如何获得double数组的长度?我的意思是,我如何知道的最后一个初始化/访问/编写的元素位于哪个位置variable?
主要区别在于:
double* variable;是一个旨在在执行期间动态分配的指针(例如,通过new或malloc),或者可以指向一个双精度对象(然后,它不是“数组”)。double variable[];是静态分配的数组(因此其大小在编译期间定义和固定)。请注意,这double variable[];作为声明无效。必须指定数组的大小(double variable[20];例如)。要回答您的问题:您无法确定a double*或double[]变量的元素数,除非您自己将其保存在某个地方。
例如,如果要将double *对象传递给函数,则需要同时传递指针和大小(元素数)。函数原型为( 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
Run Code Online (Sandbox Code Playgroud)
要么:
static const size_t mySize = 20;
double data[mySize];
callFunc( data, mySize );
// no need to be deleted because statically allocated
Run Code Online (Sandbox Code Playgroud)
正如其他用户所评论的,更喜欢一个std :: vector,它封装了double *指针及其元素数量(在其他属性中):
std::vector<double> data;
data.assign( 20, 0.0 );
callFunc( data );
Run Code Online (Sandbox Code Playgroud)
callfunc然后可以使用访问数据值并知道其大小data.size()。
注:对于char *,惯例是最终通过一个特殊的字符(串\0),因此,在这种情况下,你可以决定size的的char通过找到这个特殊字符数组(这是strlen做)。您可以使用double *指针执行类似的操作(例如使用NaN来标识最后一项,然后恢复数组大小),但这只是一个小技巧,也不是常规做法,也不建议这样做。
| 归档时间: |
|
| 查看次数: |
10788 次 |
| 最近记录: |