c语言数组定义不指定大小(C语言中定义数组时可以不定义长度吗,这样:uint8 array[]看到一个函数的参数是这样定义的)
![c语言数组定义不指定大小(C语言中定义数组时可以不定义长度吗,这样:uint8 array[]看到一个函数的参数是这样定义的)](/static/images/content_image/beach-394503_1920.jpg)
本文目录
- C语言中定义数组时可以不定义长度吗,这样:uint8 array[]看到一个函数的参数是这样定义的
- c中隐式定义数组不指定大小会怎么样
- c语言中什么时候数组不必定义大小,直接用[]表示 麻烦告诉下,谢谢
- c语言 怎么声明一个不确定大小的数组
- C语言中,如何定义大小不确定,由运行时确定大小的数组
C语言中定义数组时可以不定义长度吗,这样:uint8 array[]看到一个函数的参数是这样定义的
C语言中可以定义个数不确定的动态数组,但不是用uint8 array;这样来定义的,这样会报错。定义个数不确定的动态数组必须先声明一个指针,然后用malloc为这个指针分配一段连续的空间,然后退出程序的时候要记得使用free释放这些变量空间,否则会造成内存泄露。
比如你要定义一个字符型的动态数组,可以先声明一个字符型指针:
char *CharNew;
然后在需要定义数组的时候,用下面语句开辟一定量的连续空间:
CharNew=(char*)malloc(10*sizeof(char));
这样你就可以像一般数组一样,用CharNew来访问数组中的元素;
当退出程序时,你要使用:
free(CharNew);来释放数据空间。
c中隐式定义数组不指定大小会怎么样
如果不指定大小,就必须数组初始化,否则无法编译
如果是结构体中带有伸缩数组(C99特性):用该结构去定义变量时,该伸缩数组成员是无法使用的,这种结构只能去定义指针,通过动态分配足够的空间,来容纳结构中的正常成员和伸缩数组所需要的额外空间
例如:
代码中只有一句int a; 那么是无法编译的
int a = {1,2,3,....}; 这个是可以编译的,因为编译器会根据你所赋予a数组的元素计算出成员数量
struct num { int a; int b; int c; };
假设用num结构去定义变量:
struct num val;
那么val实际上的成员只有a和b可以调用,而c,因为定义模版时没有赋予它固定的成员个数,实际上c数组所占用空间字节为0,即无储存空间可用
struct num *p;
p = malloc( sizeof(struct num) + 3 * sizeof(int) );
那么p所指向的空间是一个拥有4+4+3*4=20字节(模版的字节是:4+4+0=8)
其中第一个4字节分配给了成员a,第二个分配给了成员b
第3-第5个分配给了c,也就是说,在动态分配之后,成员c是一个拥有3个元素的数组
c语言中什么时候数组不必定义大小,直接用[]表示 麻烦告诉下,谢谢
C/C++中使用数据都必须要在定义的时候确定大小。
直接用的情况是在声明数组时就初始化该数组,例子如下:
int a = {1,2,3,4,5,6,7,8};
这种直接使用是因为在直接声明赋初值时,初始值确定了数据的大小,如上例数组大小为8.
外还有一种是将数组作为参数传给函数,实际那是传的指针,如下:
void function(int a);调用该函数时是直接写function(a);
此外基本没有直接使用的。
C/C++中如果不确定数组大小的,一般会使用堆栈或容器进行操作。或是动态分配内存自己管理操作。
c语言 怎么声明一个不确定大小的数组
C没有提供现成的办法。不过我在实际工作中做过,用起来挺爽的。声明一个所需类型的指针p,用malloc函数申请一个较小的空间(例如10个元素)并将首地址赋给p就构成了以p为首地址的一维数组;然后向数组输入数据;输入满后还需输入时,用上述同样办法另申请一个以指针q为首地址的较大的数组(例如20个元素)。把p的数据全拷贝到q数组,把p指向的空间释放并让p指向q,继续输入……如此反复。
C语言中,如何定义大小不确定,由运行时确定大小的数组
#include 《stdio.h》
#include 《stdlib.h》 // malloc, free
int main()
{
int i, n;
int* p; // 声明为指针
scanf( "%d", &n );
p = ( int* )malloc( sizeof(int) * n ); // 以字节为单位分配
for ( i = 0; i 《 n; ++i ) {
p = i+1;
printf( "%d ", p );
}
free( p ); // 用完记得释放
return 0;
}
![c语言数组定义不指定大小(C语言中定义数组时可以不定义长度吗,这样:uint8 array[]看到一个函数的参数是这样定义的)](/static/images/content_image/lighthouse-3209985_1920.jpg)
更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40




