digitalmars.D.learn - Simple Array Question
- Silv3r (15/15) Jun 01 2007 When using multi-dimensional arrays I easily get confused as to the orde...
- Johan Granberg (9/30) Jun 01 2007 ok, first args[] is the same as writing only args as a slice of an entir...
- BCS (4/12) Jun 01 2007 args[i][] == get args[i], take all of it as a slice
When using multi-dimensional arrays I easily get confused as to the order of the notation. But why does args[i][] equal args[][i] (code below)? I assume args[i][] is the more correct version as only args[i][0] gives the correct results? -Silv3r ----------------------------------------------------------------------- import std.stdio; void main(char[][] args) { writefln("args.length = %d\n", args.length); for (int i = 0; i < args.length; i++) { if(args[i][] == args[][i]) // why does args[i][] equal args[][i]? writefln("Why does this work? [%d] = '%s'", i, args[i][]); writefln("<%s>,<%s>", args[i][0],args[0][i]); } } -----------------------------------------------------------------------
Jun 01 2007
Silv3r wrote:When using multi-dimensional arrays I easily get confused as to the order of the notation. But why does args[i][] equal args[][i] (code below)? I assume args[i][] is the more correct version as only args[i][0] gives the correct results? -Silv3r ----------------------------------------------------------------------- import std.stdio; void main(char[][] args) { writefln("args.length = %d\n", args.length); for (int i = 0; i < args.length; i++) { if(args[i][] == args[][i]) // why does args[i][] equal args[][i]? writefln("Why does this work? [%d] = '%s'", i, args[i][]); writefln("<%s>,<%s>", args[i][0],args[0][i]); } } -----------------------------------------------------------------------ok, first args[] is the same as writing only args as a slice of an entire dynamic array is itself. second think of the array brackets as a stack (char[])[] args so args is an array (of char arrays) if you take an element of that you eliminate the outer brackets char[] a=args[0]; hope this helps and if I misunderstood the question I'm sorry.
Jun 01 2007
Reply to Silv3r,When using multi-dimensional arrays I easily get confused as to the order of the notation. But why does args[i][] equal args[][i] (code below)? I assume args[i][] is the more correct version as only args[i][0] gives the correct results? -Silv3rif(args[i][] == args[][i]) // why does args[i][] equal args[][i]?args[i][] == get args[i], take all of it as a slice args[][i] == get all of args as a slice, take [i] of it in an expression [] is the same as [0..$]
Jun 01 2007
Reply to BCS, This reminds me of something I have been finding handy recently: //take a slice starting at i and of length j: arr[i..$][0..j] the alternative is a bit uglier IMHO arr[i..i+j]
Jun 01 2007