digitalmars.D.learn - [Beginner]Variable length arrays
- helxi (14/14) Feb 25 2017 I am trying to create an array which has a user defined size.
- rikki cattermole (7/20) Feb 25 2017 T[X] is a static array, its size must be known at compile time.
- helxi (3/30) Feb 25 2017 Thanks
I am trying to create an array which has a user defined size. However the following program is not compiling: import std.stdio; void main(){ write("Enter your array size: "); int n; readf(" %s", &n); int[n] arr; //<-Error: variable input cannot be read at compile time writeln(arr); } 1. What's causing this? 2. How can I get around this? I know I can always create a loop that appends value 'n' times.
Feb 25 2017
On 26/02/2017 3:31 AM, helxi wrote:I am trying to create an array which has a user defined size. However the following program is not compiling: import std.stdio; void main(){ write("Enter your array size: "); int n; readf(" %s", &n); int[n] arr; //<-Error: variable input cannot be read at compile time writeln(arr); } 1. What's causing this?T[X] is a static array, its size must be known at compile time. Static arrays are passed around by value not by reference and generally get stored on the stack not the heap.2. How can I get around this? I know I can always create a loop that appends value 'n' times.This is where you want a dynamic array, allocated on the heap at runtime. T[] array; array.length = n;
Feb 25 2017
On Saturday, 25 February 2017 at 14:34:31 UTC, rikki cattermole wrote:On 26/02/2017 3:31 AM, helxi wrote:ThanksI am trying to create an array which has a user defined size. However the following program is not compiling: import std.stdio; void main(){ write("Enter your array size: "); int n; readf(" %s", &n); int[n] arr; //<-Error: variable input cannot be read at compile time writeln(arr); } 1. What's causing this?T[X] is a static array, its size must be known at compile time. Static arrays are passed around by value not by reference and generally get stored on the stack not the heap.2. How can I get around this? I know I can always create a loop that appends value 'n' times.This is where you want a dynamic array, allocated on the heap at runtime. T[] array; array.length = n;
Feb 25 2017