c语言如何定义未知个数的数组
发布时间:2025-05-13 15:09:03 发布人:远客网络
一、c语言如何定义未知个数的数组
1、C语言在数组个数未知的情况下,根据应用情况不同,有三种方式。
2、1,数组元素总数未知,但是需要存储的内容是已知的。其实这是一种变相的已知个数,只是编程者不去计算总个数,把这个工作交给系统来做。这时可以通过数组个数留空,显式初始化数组进行声明。比如 char s[]="this is a test string";就是初始化了这样一个数组s,其空间个数隐式的由初始化字符串决定。
3、2,数组元素总数未知,但最大规模已知。比如不知道数组的总个数,但是确定不会超过100个,那么就可以定义一个100个元素的数组,供存储调用。
4、3,动态分配数组。通过malloc函数,可以动态的分配数组,然后记录下当前分配的数组元素个数,并使用该数组。当数组空间不足时,可以通过realloc函数,重新分配空间,扩大数组元素个数。比如 int size= 100; int*p=(int*)malloc(sizeof(int)* 100);//初始化分配100个元素空间。用size保存当前数组规模。 p= realloc(sizeof(int)*(size+ 100), p);//当空间不足时,增加100个元素。 size+=100;//需要注意的是,必须同步维护size的大小,否则会出错。
二、c语言中怎样定义一个未知长度的数组
设置值等于null就行了追问:给个例子白??小弟是自学的!悟性低啦??谢谢!!回答: int[] a=null;就是把数组 a的值设置为空。所以系统没有为他分配内存,等你给数组a赋值的时候系统会自动给他分配相应的内存追问:我在手机上的搜索貌似说的是用到链表和指针神魔的??但是找不到啦!!麻烦您能帮忙给个例子不??谢谢!!回答:链表指针需要用这么麻烦吗。我从没这样弄过。你需要的是一个未知长度的数组,所以不给这个数组赋值就是最好的。比如int[] a;这就是申明一个数组变量 a,但没给他赋值所以他就没有长度追问:哦好吧!!嘿嘿!!谢谢啦!!知道啦!!回答:速度选个满意呗
三、c语言数组的定义
C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。
在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符;数组名;[常量表达式]。
其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10];/*说明整型数组a,有10个元素*/
float b[10], c[20];/*说明实型数组b,有10个元素,实型数组c,有20个元素*/
char ch[20];/*说明字符数组ch,有20个元素*/
对于数组类型说明应注意以下几点:
1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2、数组名的书写规则应符合标识符的书写规定。
3、数组名不能与其它变量名相同。例如:
4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。
5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:
是合法的。但是下述说明方式是错误的。
6、允许在同一个类型说明中,说明多个数组和多个变量。例如:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。