① c语言如何计算一维数组个数
以上代码中sizeof(a)的结果是40,而sizeof(int)的结果是4,len就是10,即数组a所占int型的个数;
你可以进行循环判断,当a[i]至a[9]都为0时,有效数值的个数为i
② C语言的一维数组长度有限制吗
如果不是动态申请的,那么数组大小取决于你的程序栈大小,如果是动态申请的,那么数组的大小取决于你的可用物理内存的大小
③ c语言 自定义数组长度
说明数组之前先说明变量。
所有的变量在使用之前都必须先定义。为什么呢?因为变量都是存放内存当中(当然一些存放在代码段如单片机使用关键字code的变量另算),一般每个内存单元的大小是一个字节,如果你在使用一个变量时没有事先定义它的类型,也就是说,编译器根本不知道该变量所占的内存空间的大小,变量能存放的数据范围也未知,这势必会造成紊乱,两个变量所规划的内存地盘不明确,CPU在访问时有没有越界都不知道,这样编译器当然不会帮你干这种坏事啦。所以,一个变量在使用之前必须先定义(存储方式、数据类型)。
好,再来说说数组。
数组是什么概念,有木有深刻的理解过?好,我现在说说一维数组(其实多维数组也是一样的)。
数组是一组具有相同类型并且有一定的相互关系的变量的集合。注意,每个数组元素都是一个变量。那这些有相互关系而且数据类型一样的变量是怎么存放在内存当中的呢?其实,他们是连续存放的,也就是说他们中间没有间隔不相关的内存单元。而且编译器也要事先知道你这个数组的长度是多少,才能分给你家多少内存。(就好像某某政府要分田地给老百姓,先数一下确定你家到底多少人口,才能分多少地给你家,不然不是浪费就是种田的时候种到别人家的田地去了,呵呵,是吧?这个编译器是绝对不允许的)。
所以说,一个数组在定义时必须要事先规定好这个数组的长度,这样编译器才知道怎么样分配内存空间给这个数组。这里注意一点,数组的长度必须是一个常量,变量是不行的,变量的值可以改变,编译器已经分配了多少空间给这个数组,怎么能说变就变呢?因为编译器是编译器,程序是程序,这个跟定义一个变量是一样的。
使用malloc函数,一般结合链表来用,链表存放的数据就不一定是连续的了。
等某一天你变成中国的计算机牛B人物了,可以想个办法做个超吊的编译器实现数组长度想怎么变就怎么变,哥也期待那一天,弟,你行的。
所以说,你想的太天真啦。哈哈。
④ C语言中第一维数组的大小的准确定义
ANSI C89标准中规定,一个数组的尺寸(下标)必须是一个整型常量表达式以便于在编译时计算大小,而这里的所谓常量(或者常量表达式的运算结果),一般是指unsigned int。
16位编译器(比如Turbo C)中,unsigned int为16位,因此数组最多32767个数据。
32位编译器(比如Visual C++ 6.0)中,unsigned int为32位,因此数组最多4294967295个数据。
以上结论为理论值。
实际上,在VC++中,我们定义一个259025元素的整型数组,虽然可以编译通过,但是我们仍将得到一个运行时错误(runtime error)。这主要跟堆和栈的大小有关,详细情况请查阅操作系统相关资料。
错误代码范例:
// VC++ 6.0 中
void main()
{
int a[259025]; // 运行时错误,259024是ok的。
char b[259025]; // ok。
char c[1036097]; // 运行时错误,1036096是ok的。
}
// TC2.0 中
void main()
{
int a[32768]; // 编译错误,32767是ok的。
char b[65536]; // 编译错误,65535是ok的。
}
⑤ c语言中对于一维数组长度为5位,但初始付值只有1,2,那其余的位数由什麽来补
int a[5]={1,2} 只给前两个赋值 后面的就默认为空(0)
如果输出的话 printf("%d\n",a[0]);printf("%d\n",a[1]);printf("%d\n",a[2]);printf("%d\n",a[3]);printf("%d\n",a[4]);
结果就是1 2 0 0 0
⑥ C语言 如何测出一维数组长度
比如: int a[15] ;
那就是 sizeof(a) 测出a的字节长度 , sizeof(int)测出int的长度,然后sizeof(a)/sizeof(int) 就是数组长度
⑦ 如何在C语言中取得一个一维的unsigned short数组的长度啊
unsigned short a[]={};
sizeof(a)/sizeof(unsigned short);
⑧ c语言 一维数组 长度自定的 输入数组数组的长度 并且输入n个数。
#include "stdio.h"
main()
{
int i,n;
float a[100];
printf("please input the length of array A:\n");
scanf("%d",&n);
printf("please input the %d numbers:\n",n);
for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
printf("the numbers are:\n");
for(i=0;i<n;i++)
{
printf("%g\n",a[i]);
}
getch();
}
⑨ C语言问题 数组a的第一维数组大小为
C正确,选C——写成{{1,2,3},{4,5,6},{7,8,}}——显然有3行,所以第一维是3。
⑩ c语言怎么获取数组的长度
c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)
如:
{
intdata[4];
intlength;
length=sizeof(data)/sizeof(data[0]);//数组占内存总空间,除以单个元素占内存空间大小
printf("lengthofdata[4]=%d",length);//输出lengthofdata[4]=4
}
但,通过传递数组名参数到子函数中,以获得数组长度是不可行的。如:
intgetLength(int[]a){
intlength;
length=sizeof(a)/sizeof(a[0]);//这样是错误的,得到的结果永远是1
returnlength;
}
因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。
因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。
拓展资料:
数组特点:
数组是相同数据类型的元素的集合。
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
对于VB的数组,表示数组元素时应注意:
下标要紧跟在数组名后,而且用圆括号括起来(不能用其他括号)。
下标可以是常量,变量,或表达式,但其值必须是整数(如果是小数将四舍五入为整数)。
下标必须为一段连续的整数,其最小值成为下界,其最大值成为上界。不加说明时下界值默认为1。