C语言定义一个整型二维字符数组赋值数组,若没有赋值,系统自动给的是0吗??

java数组的定义与使用方法_百度知道
java数组的定义与使用方法
谁能帮忙介绍一下JAVA数组的定义与使用方法小弟到现在还是无法理解,什么是JAVA数组与以多维的使用方法根本不知道第几维的第几个元素是什么,是哪个?能不能讲解一下,多举几个例子!~大恩大德,末齿难忘!
提问者采纳
数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素。§5.1一维数组一、一维数组的定义type arrayName[];其中类型(type)可以为Java中任意的数据类型,包括简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量。例如:int intArray[];声明了一个整型数组,数组中的每个元素为整型数据。与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。我们必须为它分配内存空间,这时要用到运算符new,其格式如下:arrayName=new type[arraySize];其中,arraySize指明数组的长度。如:intArray=new int[3];为一个整型数组分配3个int型整数所占据的内存空间。通常,这两部分可以合在一起,格式如下:type arrayName=new type[arraySize]; 例如:int intArray=new int[3];二、一维数组元素的引用定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式为:arrayName[index]其中:index为数组下标,它可以为整型常数或表达式。如a[3],b[i](i为整型),c[6*I]等。下标 从0开始,一直到数组的长度减1。对于上面例子中的in-tArray数来说,它有3个元素,分别为: intArray[0],intArray[1],intArray[2]。注意:没有intArray[3]。另外,与C、C++中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。例5.1public class ArrayTest{public static void main(String args[]){int a[]=newint[5];for(i=0;i<5;i++)a[i]=i;for(i=a.length-1;i>=0;i--)System.out.println(&a[&+i+&]=&+a[i]);}}运行结果如下:C:\>java ArrayTesta[4]=4a[3]=3a[2]=2a[1]=1a[0]=0该程序对数组中的每个元素赋值,然后按逆序输出。三、一维数组的初始化对数组元素可以按照上述的例子进行赋值。也可以在定义数组的同时进行初始化。例如:int a[]={1,2,3,4,5};用逗号(,)分隔数组的各个元素,系统自动为数组分配一定空间。与C中不同,这时Java不要求数组为静态(static)。四、一维数组程序举例:例5.2Fibonacci数列Fibonacci数列的定义为:F1=F2=1,Fn=Fn-1+Fn-2(n>=3)public classFibonacci{public static void main(String args[]){int f[]=new int[10];f[0]=f[1]=1;for(i=2;i<10;i++)f[i]=f[i-1]+f[i-2];for(i=1;i<=10;i++)System.out.println(&F[&+i+&]=&+f[i-1]);}}运行结果为:C:\>java FibonacciF[1]=1F[2]=1F[3]=2F[4]=3F[5]=5F[6]=8F[7]=13F[8]=21F[9]=34F[10]=55例5.3冒泡法排序(从小到大)冒泡法排序对相邻的两个元素进行比较,并把小的元素交到前面。public class BubbleSort{public static void main(String args[]){int i,j;int intArray[]={30,1,-9,70,25};int l=intArray.for(i=0;i<l-1;i++)for(j=i+1;j<l;j++)if(intArray[i]>intArray[j]){int t=intArray[i];intArray[i]=intArray[j];intArray[j]=t;}for(i=0;i<l;i++)System.out.println(intArray[i]+&&);}}运行结果为:C:\>java BubbleSort-91253070§5.2多维数组与C、C++一样,Java中多维数组被看作数组的数组。例如二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。下面我们主要以二维数为例来进行说明,高维的情况是类似的。一、二维数组的定义二维数组的定义方式为:type arrayName[][];例如:int intArray[][];与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才可以访问每个元素。对高维数组来说,分配内存空间有下面几种方法:1直接为每一维分配空间,如:int a[][]=new int[2][3];2从最高维开始,分别为每一维分配空间,如:int a[][]=new int[2][];a[0]=new int[3];a[1]=new int[3];完成1中相同的功能。这一点与C、C++是不同的,在C、C++中必须一次指明每一维的长度。二、二维数组元素的引用对二维数组中每个元素,引用方式为:arrayName[index1][index2] 其中index1、index2为下标,可为整型常数或表达式,如a[2][3]等,同样,每一维的下标都从0开始。三、二维数组的初始化有两种方式:1直接对每个元素进行赋值。2在定义数组的同时进行初始化。如:int a[][]={{2,3},{1,5},{3,4}};定义了一个3×2的数组,并对每个元素赋值。四、二维数组举例:例5.4矩阵相乘两个矩阵Am×n、Bn×l相乘得到Cm×l,每个元素Cij=?aik*bk (i=1..m,n=1..n)public class MatrixMultiply{public static void main(String args[]){int i,j,k;int a[][]=new int[2][3];int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};int c[][]=new int[2][4];for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=(i+1)*(j+2);for(i=0;i<2;i++){for(j=0;j<4;j++){c[i][j]=0;for(k=0;k<3;k++)c[i][j]+=a[i][k]*b[k][j];}}System.out.println(&\n***MatrixA***&);for(i=0;i<2;i++){for(j=0;j<3;j++)System.out.print(a[i][j]+&&);System.out.println();}System.out.println(&\n***MatrixB***&);for(i=0;i<3;i++){for(j=0;j<4;j++)System.out.print(b[i][j]+&&);System.out.println();}System.out.println(&\n***MatrixC***&);for(i=0;i<2;i++){for(j=0;j<4;j++)System.out.print(c[i][j]+&&);System.out.println();}}}其结果为:C:\>java MatrixMultiplyfor(j=0;j<4;j++)System.out.print(c[i][j]+&&);System.out.println();}}}其结果为:C:\>java MatrixMultiply***MatrixA***2 3 44 6 8***MatrixB***1 5 2 85 9 10 -32 7 -5 -18***MatrixC***25 65 14 -6550 130 28 -130如果你学过线性代数,应该可以比较好地理解多维数组。多维数组和矩阵结合紧密。a[i][j]就是第i-1行的第j-1列的元素,因为下标是从0开始的。比如:一个数组:1
6a[0][0]=1 a[0][1]=2 a[0][2]=3a[1][0]=3 a[1][1]=5 a[1][2]=6我推荐你看几本书:1.Thinking in Java2.Java 2 核心技术3.Java2实用教程4.面向对象程序设计与java语言
参考资料:
其他类似问题
79人觉得有用
java数组的相关知识
按默认排序
其他1条回答
工~找到拉,
翘搓甜心公主泡泡糖(好看)脚钉
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁二维数组随机赋值的问题
[问题点数:100分]
二维数组随机赋值的问题
[问题点数:100分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。|||||| 更多
比特客户端
我们也在这里:
简单分析C语言的二维数组模拟
关键字:C语言
  从前面的讨论中,我们不难得出一个推论,*a即数组a中下标为0的元素的引用。例如,我们可以这样写:
  1 *a=84;
  这个语句将数组a中下标为0的元素的值设置为84.同样道理,*(a+1)数组a中下标为1的的元素的引用,以此类推,概而言之,*(a+i)即数组中下标为i的元素的引用,这种写法是如此常用,因此被简记为a[i].
  正是这一概念让C语言新手难于理解,实际上,由于a+i与i+a的一样,因此a[i]和i[a]也具有同样的含义。也许某些汇编语言程序员会发现后一种写法很熟悉,但我们绝对不推荐这种写法。
  现在我们可以考虑二维数组了,正如前面所讨论的,它实际上是以数组为元素的数组,尽管我们也可以完全依据指针编写操纵一维数组的程序,这样做在一维情形下并不困难,但是对于二维数组从记法上的便利性来说采用下述形式就几乎是不可替代了。还有,如果我们仅仅使用指针来操纵二维数组,我们将不得不与C语言中最为“晦暗不明”的部分打交道,并常常遭遇到潜伏着的编译器bug.
  让我们回过头来再看前面的几个声明:
  1 int calendar[12][31];
  2 int *p
  然后考一考自己,calendar[4]的含义是什么?
  因为calendar是一个有着12个数组类型元素的数组,它的每个数组类型元素又是一个有着31个整型数组,所以calendar[4]是 calendar数组的第五个元素,是calendar数组中12个有着31个整型元素的数组之一,因此calendar[4]的行为也就表现一个有着31个整形元素的数组的行为,例如sizeof(calendar[4])的结果是31与sizeof(int)的乘积。
  1 p=calendar[4];
  这个语句使指针p指向了数组calendar[4]中下标为0的元素。如果calendar[4]是一个数组,我们当然可以通过下标的形式来指定这个数组中的元素,就像下面这样:
  1 i = calendar[4][7];
  我们确实也可以这样做。还是与前面类似的道理,这个语句可以写成下面这样而表达式的意思保持不变:
  1 i = *(calendar[4]+7);
  这个语句还可以进一步写成:
  1 i = *(*(calendar+4)+7);
  从这里我们不难发现,用方括号的下标形式很明显地要比指针来表达简便得多。下面我们再看:
  这个语句是非法的,因为calendar是一个二维数组,即数组的数组,在此处的上下文中使用calendar名称会将其转化为一个指向数组的指针,而p是一个指向整型变量的指针,这个语句试图将一个类型的指针赋值给另一种类型的指针,所以是非法的。
  很显然,我们需要一种声明指向数组的指针的方法,经过了前面对类似问题不厌其烦的讨论,构造出下面的语句应该不需要废多大力气:
  1 int (*ap)[31];
  这个语句的效果是,声明了*ap是一个拥有三十一个整型元素的数组ap就是一个指向这样的数组的指针,因而我们可以这样写:
  1 int(*monthp)[31];
  2 Monthp =
  这样,monthp将指向数组calendar的第一个元素,也就是数组calendar的12个有着31个元素的数组类型元素之一。
  假定在新的一年开始时,我们需要清空calendar数组,用下标形式可以很容易做到:
  3 for(month=0;month & 12;month++){
  5 for(day=0; day & 31;day++)
  6 calendar[month][day]=0;
  上面的代码段如果才用指针应该如何表示呢?我们很容易地把 calendar[month][day]=0; 表示为*(*(calendar+month)+day)=0;
  但是真正有关的部分是哪些呢?
  如果指针monthp指向一个拥有31个整型元素的数组,而calendar的元素也是一个拥有31个整型元素的数组,因此就像是在其他情况中我们可以使用一个指针遍历一个数组一样,这里我们同样可以使用指针monthp以步进的方式遍历数组calendar:
  1 int (*monthp)[31];
  2 for(monthp=monthp & &calendar[12];monthp++){
  3 int *
  4 for(dayp=*dayp & &(*monthp)[31];dayp++)
  5 *dayp=0;
  到目前为止,我们一路行来几乎是“如履薄冰”,而且已经走得很远,在我们跌跤之前,最好趁早悬崖勒马。尽管本节中最后一个例子是合法的ANSI C程序,但是作者还有找到一个能够让该程序顺利通过编译的编译器(译注:现在大多数的c编译器能够接受上面例子中的代码)。上面例子的讨论虽然有些偏离本书的主题,但是这个例子能够很好地揭示出C语言中数组与指针之间的独特的关系,从而更清楚明白地阐述这两个概念。
相关文章:
[ 责任编辑:之极 ] &&&&
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注ChinabyteC语言定义一个整型二维数组,若没有赋值,系统自动给的是0吗??_百度知道
C语言定义一个整型二维数组,若没有赋值,系统自动给的是0吗??
C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
其他7条网友回答:C语言定义一个整型二维数组,若没...
不是5人回答
认为“是”的网友回答:
回答1:需要初始化的
认为“不是”的网友回答:
回答1:不会,系统只会分配一个二维数组的内存空间,而这个空间分配以前储存的是什么数在赋值之前就还是那个数
其他类似问题
二维数组的相关知识
其他1条回答
编译器说了算。C语言只有C89,C99这样的标准。根据你数组的位置,如果是在栈内,也就是函数体内申请的局部变量,是随机值。如果是全局,全局变量或者静态变量static,那么编译器会自动给赋值成0值。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用指针与一维数组理解与构造
服务器君一共花费了141.118 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议
从前面的讨论中,我们不难得出一个推论,*a即数组a中下标为0的元素的引用。例如,我们可以这样写:
这个语句将数组a中下标为0的元素的值设置为84.同样道理,*(a+1)数组a中下标为1的的元素的引用,以此类推,概而言之,*(a+i)即数组中下标为i的元素的引用,这种写法是如此常用,因此被简记为a[i].
正是这一概念让C语言新手难于理解,实际上,由于a+i与i+a的含义一样,因此a[i]和i[a]也具有同样的含义。也许某些汇编语言程序员会发现后一种写法很熟悉,但我们绝对不推荐这种写法。
现在我们可以考虑二维数组了,正如前面所讨论的,它实际上是以数组为元素的数组,尽管我们也可以完全依据指针编写操纵一维数组的程序,这样做在一维情形下并不困难,但是对于从记法上的便利性来说采用下述形式就几乎是不可替代了。还有,如果我们仅仅使用指针来操纵二维数组,我们将不得不与C语言中最为“晦暗不明”的部分打交道,并常常遭遇到潜伏着的编译器bug。
让我们回过头来再看前面的几个声明:
int calendar[12][31];
然后考一考自己,calendar[4]的含义是什么?
因为calendar是一个有着12个数组类型元素的数组,它的每个数组类型元素又是一个有着31个整型数组,所以calendar[4]是 calendar数组的第五个元素,是calendar数组中12个有着31个整型元素的数组之一,因此calendar[4]的行为也就表现一个有着31个整形元素的数组的行为,例如sizeof(calendar[4])的结果是31与sizeof(int)的乘积。
p=calendar[4];
这个语句使指针p指向了数组calendar[4]中下标为0的元素。如果calendar[4]是一个数组,我们当然可以通过下标的形式来指定这个数组中的元素,就像下面这样:
i = calendar[4][7];
我们确实也可以这样做。还是与前面类似的道理,这个语句可以写成下面这样而表达式的意思保持不变:
i = *(calendar[4]+7);
这个语句还可以进一步写成:
i = *(*(calendar+4)+7);
从这里我们不难发现,用方括号的下标形式很明显地要比来表达简便得多。下面我们再看:
这个语句是非法的,因为calendar是一个二维数组,即数组的数组,在此处的上下文中使用calendar名称会将其转化为一个指向数组的指针,而p是一个指向整型变量的指针,这个语句试图将一个类型的指针赋值给另一种类型的指针,所以是非法的。
很显然,我们需要一种声明指向数组的指针的方法,经过了前面对类似问题不厌其烦的讨论,构造出下面的语句应该不需要废多大力气:
int (*ap)[31];
这个语句的效果是,声明了*ap是一个拥有三十一个整型元素的数组ap就是一个指向这样的数组的指针,因而我们可以这样写:
int(*monthp)[31];
这样,monthp将指向数组calendar的第一个元素,也就是数组calendar的12个有着31个元素的数组类型元素之一。
假定在新的一年开始时,我们需要清空calendar数组,用下标形式可以很容易做到:
int month;
for(month=0;month < 12;month++){
for(day=0; day < 31;day++)
calendar[month][day]=0;
上面的代码段如果才用指针应该如何表示呢?我们很容易地把 calendar[month][day]=0; 表示为*(*(calendar+month)+day)=0;
但是真正有关的部分是哪些呢?
如果指针monthp指向一个拥有31个整型元素的数组,而calendar的元素也是一个拥有31个整型元素的数组,因此就像是在其他情况中我们可以使用一个指针遍历一个数组一样,这里我们同样可以使用指针monthp以步进的方式遍历数组calendar:
int (*monthp)[31];
for(monthp=monthp < &calendar[12];monthp++){
for(dayp=*dayp < &(*monthp)[31];dayp++)
到目前为止,我们一路行来几乎是“如履薄冰”,而且已经走得很远,在我们跌跤之前,最好趁早悬崖勒马。尽管本节中最后一个例子是合法的ANSI C程序,但是作者还有找到一个能够让该程序顺利通过编译的编译器(译注:现在大多数的c编译器能够接受上面例子中的代码)。上面例子的讨论虽然有些偏离本书的主题,但是这个例子能够很好地揭示出C语言中数组与指针之间的独特的关系,从而更清楚明白地阐述这两个概念。
延伸阅读此文章所在专题列表如下:
本文地址:,欢迎访问原出处。
不打个分吗?
还木有人打分噢!
转载随意,但请带上本文地址:
如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 。
大家都在看
现代魔法研究协会欢迎你
阅读一百本计算机著作吧,少年
林登 (LinDen.P.V.D) (作者), 徐波 (译者)
《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。《C专家编程》可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,《C专家编程》可以帮助他们站在C的高度了解和学习C++。
扫一扫,在手机上阅读
栏目最新博文
8,273 views
10,211 views
7,167 views
5,180 views
7,333 views
6,886 views
5,328 views
6,134 views
6,062 views
10,326 views
栏目博文推荐
2,850 views
2,000 views
6,068 views
29,327 views
5,385 views
7,493 views
27,475 views
6,134 views
5,537 views
3,169 views
总有人在你切一盘水果时秒杀一道数学题,总有人在你调整愤怒的小鸟弹射角度时记住一个单词,总有人在你打一盘dota的时间内看完一章教材,总有人在你打一局2K的时间里完成一套阅读题,总有人在你与他人闲聊时听一段VOA,总有人在你熟睡时回想一天的得失,总有人比你跑得快,你还会虚度光阴么?
1,167 views
关于网站与作者
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼(愿景)。
“Veda”的本义是知识、启示,希望这里能为开发者提供充足的技术资料。
我的电子邮件gonnsai(,腾讯微博:,欢迎与我联系。

我要回帖

更多关于 二维字符数组赋值 的文章

 

随机推荐