int* data;
int main()
{
    int n;
    // get n from the user.
    data = new int[n];
    // use data.
    .
    .
    delete[] data;
}
或者只是永远忘记指针并使用向量!
std::vector<int> data;
data.push_back(55);
// just push_back data!
==================================================== ======================
编辑 :: 如果你想使用 Edouard A. 方式:)
#include <iostream>
#include <sstream>
#include <vector>
int main(int argc, char* argv[])
{
    std::vector<double>::size_type dataSize = 0;
    std::stringstream convertor(argv[1]);
    {
        if(argc > 1)
        {
            convertor >> dataSize;
            if(convertor.fail() == true)
            {
                // do whatever you want here in case
                // the user didn't input a number.
            }
        }
    }
    std::vector<double> data(dataSize);
    // use the vector here.
    return 0;
}
在这种情况下,我更喜欢使用 lexical_cast,但我不确定你是否有 Boost。
#include <iostream>
#include <vector>
#include <boost/lexical_cast.hpp>
int main(int argc, char* argv[])
{
    typedef std::vector<double>::size_type vectorSize;
    if(argc < 2)
    {
        // err! The user didn't input anything.
    }
    vectorSize dataSize = boost::lexical_cast<vectorSize>(argv[1]);
    std::vector<double> data(dataSize);
    // use the vector here.
    return 0;
}