以下是Java中明显且通常的数组声明和初始化.
int r[], s[]; //<-------
r=new int[10];
s=new int[10];
Run Code Online (Sandbox Code Playgroud)
当[]在声明语句中更改位置时,非常类似的情况表现不同,如下所示.
int []p, q[]; //<-------
p=new int[10];
q=new int[10][10];
Run Code Online (Sandbox Code Playgroud)
请看一下声明.位置[]已经从r[]变为[]p.在这种情况下,数组的q行为类似于类型数组int(这与前一种情况完全不同).
问题:为什么q在这个声明中int []p, q[];被视为二维数组?
附加信息:
以下语法看起来很糟糕.
int []a[];
Run Code Online (Sandbox Code Playgroud)
然而,这符合罚款,只是表现得像int a[][];或int [][]a;.
因此,以下案例都是有效的.
int [][]e[][][];
int [][][][][]f[][][][];
Run Code Online (Sandbox Code Playgroud)
zw3*_*324 43
的
[]可能显示为在声明的开头所述类型的部分,或作为说明符用于特定变量,或两者的一部分.
和
声明器中允许使用括号作为对C和C++传统的认可.但是,变量声明的一般规则允许括号出现在类型和声明符中,以便本地变量声明:
Run Code Online (Sandbox Code Playgroud)float[][] f[][], g[][][], h[]; // Yechh!相当于一系列声明:
Run Code Online (Sandbox Code Playgroud)float[][][][] f; float[][][][][] g; float[][][] h;
例如:
int []p, q[];
Run Code Online (Sandbox Code Playgroud)
只是
int[] p, q[]
Run Code Online (Sandbox Code Playgroud)
事实上
int p[]; int q[][]
Run Code Online (Sandbox Code Playgroud)
其余的都很相似.
Zho*_*gYu 10
声明变量的理智方式是
type name
Run Code Online (Sandbox Code Playgroud)
所以,如果是类型int[],我们应该写
int[] array
Run Code Online (Sandbox Code Playgroud)
永远不要写
int array[]
Run Code Online (Sandbox Code Playgroud)
这是胡言乱语(虽然它是合法的)