1

目前我有几个类,其数组定义为“float myIDs”。我想将变量移动到我的父类中并将其更改为指针('float * myIDs')。

目前我正在这样声明它的值:

float myIDs[] = {
    //Variables
};

由于它现在是一个指针,我认为它大致相同:

myIDs = new float[] = {
};

但这似乎不起作用。我不知道如何解决这个问题,因为我以前从来没有声明过这样的指针数组。

任何人都可以帮助我吗?

谢谢

4

6 回答 6

8

请注意,您不是分配指针数组,而只是分配浮点数组,因此基本上您的两个数组将具有相同的类型,它们只是不会存储在相同的内存空间中。

只有静态分配的数组才能以这种方式初始化,动态分配的数组不能初始化为零以外的任何值。

myIDs = new float[]();

但是如果您知道要放入数组的元素,则不需要动态分配它。

如果你想分配一个指针数组,你必须这样做:

float* myIDs[size]; // statically
float** myIDs = new float*[size]; // dynamically

但是只有静态分配的一个(第一个)可以按照您描述的方式进行初始化,当然,它必须使用指针进行初始化。

于 2013-04-17T07:11:11.660 回答
3

If you want to declare array in a dynamic way, you can do it like this:

float *array = new float[size];
array[0] = first_value;
array[1] = second_value;
etc; 

Just remember to free memory when you no longer need it (e.g. in a class destructor)

delete [] array;
于 2013-04-17T07:37:40.833 回答
0

如果您想要一个动态分配的数组,您应该使用以下格式(您所做的看起来更像是 C# 而不是 C++)

//The declaration of the object in the class
float *myIDs;

//The allocation it self (you must know which size you want to allocate at this point)
myIDs = new float[size];//bring change "size" to whatever you need is.
于 2013-04-17T07:10:49.223 回答
0
于 2013-04-17T07:11:22.280 回答
0

The easiest way is:

float *myArray[size];

Example

#include <iostream>
using namespace std;

float* findMax (float* myArray[], int size) {
    float max = 0;
    int index = 0;
    for (int i = 0; i < size; i++) {
        if ( *myArray[i] > max) {
            max = *myArray[i];
            index = i;
        }
    }
    
    return myArray[index];
}

int main()
{
    float a = 1.25; 
    float b = 2.47; 
    float c = 3.92; 
    float d = 4.67; 
    float e = 5.89; 
    float f = 6.01;
    
    float *myArray[6];
    int len = *(&myArray + 1) - myArray;

    myArray[0] = &a;
    myArray[1] = &b;
    myArray[2] = &c;
    myArray[3] = &d;
    myArray[4] = &e;
    myArray[5] = &f;

    cout << "Number of even values are : " << findMax(myArray, len) << endl;

    return 0;
}
于 2020-11-16T16:41:40.773 回答
-4

如果你想要一个指针数组浮动,你必须这样声明它。您只声明了一个浮点数组。数组的名称当然是一个指针,但在 C 语法中,它的处理方式相同,只是为了方便。

float *myIDs[] = {
  //Variables
};

myIDs = new *float[n] = {
};

或者,您可以使用

float **myIDs;
myIDs = new **float;

并以与数组相同的方式访问它:

浮动 *x = myIDs[i];

于 2013-04-17T07:11:09.610 回答