若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量,用于区分数组的各个元素的数字编号称为下标。
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式,这些有序排列的同类数据元素的集合称为数组。
数组特点:
1、数组是相同数据类型的元素的集合。
2、数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3、数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
可以通过”Scanner“函数 直接输入参数的形式,创建一个新数组即可,举例:import javautilScanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(Systemin);
Systemoutprintln("请输入一个数组长度:");
int length=inputnextInt();//输入一个正整数就是要定义的数组长度
int a[]=new int[length];
}
}
备注:上面的” int a[]=new int[renshu]“就是定义的新的数组,其中length就是数组的长度。c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)
如:
{
int data[4];
int length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小
printf("length of data[4]=%d", length ); //输出length of data[4]=4
}
1、c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)。
例如:
int length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小
printf("length of data[4]=%d", length ); //输出length of data[4]=4
2、但是,通过传递数组名参数到子函数中,以获得数组长度是不可行的。
例如:
int length;
length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1
return length;
}
因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。
3、因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。
#include <stringh>
int main()
{
int i;
char s[]="1234"; //两种方法,一是直接调用函数strlen,一是直接计算,计算值会多1
//因为多了个数组结尾符'\0\'
printf("长度是:%d %d\n",strlen(s),sizeof(s)/sizeof(char)); //结果是4,5
for(i=0;i<strlen(s);i++)//遍历访问数组时,用strlen(s)作为长度限定输出即可
printf("%c",s[i]);
printf("\n");
return 0;
}你好
应该这样理解
首先,就c语言来讲,字符串的实现一般使用数组,例如
char
s[]
=
"hello";
hello里面有五个字符
分别是
h
e
l
l
o
由于c语言规定在存放字符串的数组里要以字符串结束符来结束
也就是‘\0’
所以上面定义中的数组s长度为字符总个数5
加上一个结束符‘\0’
也就是6
那么
字符串的长度就是5
但该数组s的长度就是6
至于通俗的数组长度,应该就指数组里面可存放元素的个数
例如char
s[100]
=
"hello";
虽然字符串s的长度为5
但这时数组长度就为100
希望能明白
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)