## 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
• BCS (6/6) Jun 01 2007 Reply to BCS,
• Silv3r (1/1) Jun 01 2007 Thanks, now I understand arrays a bit better!
Silv3r <14908832 sun.ac.za> writes:
```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
Johan Granberg <lijat.meREM OVEgmail.com> writes:
```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?

-Silv3r

if(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
Silv3r <14908832 sun.ac.za> writes:
```Thanks, now I understand arrays a bit better!
```
Jun 01 2007