数组的初始化有两种:第一种:String[] stu=new String[]{"1","2","3"};。
第二种:String[] stu=new String[3];。
stu[0]=1;
stu[2]=2;
stu[3]=3;
你的错误好像是没有new char[] 。
希望对你有帮助
C语言允许用字符串的方式对数组作初始化赋值。例如:
static char c[]={'c',' ','p','r','o','g','r','a','m'}; 可写为:
static char c[]={"C program"}; 或去掉{}写为:
static char c[]="C program";。
当对全体元素赋初值时也可以省去长度说明。例如:static char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};这时C数组的长度自动定为9。
扩展资料:
数组的使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组
数组的初始化有两种:第一种:String[] stu=new String[]{"1","2","3"};。
第二种:String[] stu=new String[3];。
stu[0]=1;
stu[2]=2;
stu[3]=3;
你的错误好像是没有new char[] 。
希望对你有帮助
我跟你说的就是你的问题的原因。。。
因为是32位机器,32位是4个字节,所以编译器在编译的时候进行按4字节对齐,4个字节4个字节的分配,当然就是当a为2个时只能输入4个 3个输入4个 4个输入8个 5个输入8个 。。。。。。8个输入12个。这很难理解么?
a[]="12"只给a分配了3个字节。
你输入1234不报错,只是因为它后面还有两个未分配的字节,这是由于你的机器是32位机,编译器会自动按4位对齐,也就是说虽然没有给a分配后面的字节,但实际上那俩字节也相当于是a的。
如果a[]="1234",那么a要分配5个字节('\0'还要占用一个),实际要占用8个字节。
左图的程序是a和b初始化时都被赋值为字符串,它们的最后都有字符'\0',有了这个标志,求字符串长度和输出字符串时都能得到正确的结果。
右图的程序a的初始化赋值仍然是字符串,所以它的输出也是正确的。而b的初始化使b成为一个“字符数组”,它的最后没有字符串结束符,系统也不会主动加上。所以,当后面你用字符串操作函数strlen和字符串格式符%s输出b时,系统会一直往后找,直到找到一个'\0'时,系统便认为,这就是字符串结束的地方,故,输出的字符串长度和字符串本身都是错误的。
b除了所以与a相同的初始化方式,或者应该用下面的语句:
b={'a','b','w','f','\0'};。
就能成为字符串了。