C语言中普通数组在定义的时候不给出数组的具体长度,那么计算机是在运行期间为其分配长度的吗?
更新时间:2021-12-02 18:30:27 • 作者:ELISA •阅读 7603
- c语言中定义一个数组可以不写数组的长度吗?
- C语言定义数组但是数组长度不确定怎么办
- c语言中,如果一个数组在定义时没有定义长度,这个数组在内存中怎么分配地址,数组名代表的指针指向哪里
- c语言中定义数组长度与不定义数组长度有什么区别
c语言中定义一个数组可以不写数组的长度吗?
展开全部
不可以,如果不能确定长度,请用STL库里的LIST,MAP,SET等数据类
或者开的数组开的大一些,保证你不会越界,多余的部分不适用就好
在定义的数组的时候,可以通过变量定义长度如:
scanf("%d", arrayLen);
int[] data = new int[arrayLen];
C语言定义数组但是数组长度不确定怎么办
假设数组存的是int型
那么 你先申请10个元素
int* a = (int*)malloc(sizeof(int)*10);
如果又来了个元素,那么你就可以
a=(int *)realloc(a,11*sizeof(int));
求元素个数int i,n=1;
for(i = 0;(a+i)!=NULL;i++)
{
;
}
n=i+1;//n就是元素个数
c语言中,如果一个数组在定义时没有定义长度,这个数组在内存中怎么分配地址,数组名代表的指针指向哪里
c语言是高级语言,定义数组的指令会转换成分配内存的指令,至于有没有为这块内存初始化,则是取决于编译器的实现。
你这个实验做得很好,可以通过你这个实验了解到编译器是如何实现的。
c语言中定义数组长度与不定义数组长度有什么区别
C语言是低级的高级语言,不会提示越界,你可以在定义5个长度呃字符数组里面输入7个字符,但是定义长度并不是没用的,编译器会专门开辟5个字符长度留给这个数组,是专用的,因此你输入7个字符后,后两个字符其实是超标领养,用了别人家的资源(可能占用了其他变量的空间),并且很容易就没娘要了(容易出错)。如果程序简单,或许出错的几率比较小,例如你只定义了这个数组的话,也不会有别的东西来干扰他,他也不会干扰别的东西,但是程序一旦复杂起来,内存空间比较拥挤,那么出错是难免的。因此有时我们要自己去实现越界提示这个功能,但是显然这样会降低程序的效率。一楼的答案也值得参考,他说的我就不说了。