We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

dynamic array declration

radarsh
radarsh asked
on
Medium Priority
503 Views
Last Modified: 2013-12-14
i want to know if it is possible to declare an array of the type

int array[ length ]; where length is a variable.

i don't want to use malloc and calloc as they complicate the program.

i get an error message "Constant Expression Required"

is there any way of making the length constant so that the above statement is valid ??

i need this for a class called Timer

i want to declare it as

Timer T[5][length];
Where length is  a variable.

is it possible ??
( without using malloc and calloc as far as possible )

Comment
Watch Question

CERTIFIED EXPERT
Top Expert 2012
Commented:
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview
CERTIFIED EXPERT

Commented:
Your compiler tells you that it's not possible...

You are asking this in the C++ area, so why not just use a C++ feature? The STL vector is like an array, but it allocates it's memory dynamically in the background. This means that you don't have to take care of this yourself.

#include <vector>
using namespace std;

vector<Timer> T;

... then just use T like an array:
T[0] = ...
T[1] = ...
T[2] = ...

Commented:
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview

Commented:
And the rest of my post ... (note that the typedef struct could be a class instead if you like)

vector<Timer5> T;
T.resize(nLength);

Then you can reference Timer instances with references that look like:
T[29].y[4]

In real life, I tend to run into situations more where I want to have a vector of vectors, in which case, I make my life simpler by defining something like this:

typedef vector<something> T_vSomething;

Then I can allocate a vector of a vector of somethings with:
vector<T_vSomething> myvv;
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview
heres a pretty simple solution here:

//first declare a pointer

int * array;

//then dynamically allocate the array like this:

array = new int[10][someVariable];

that should work
AxterSenior Software Engineer
Commented:
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a free trial preview!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.