当前位置:首页 » 编程语言 » c语言可变数组

c语言可变数组

发布时间: 2022-06-10 09:45:58

c语言中怎样定义一个可变大小的数组呢我想根据自己的需要输入数组的大小,谢谢啦

定义动态数组,例如:
#include <stdio.h>
#include <stdlib.h>
int len;
char *str;
printf("输入数组的长度:");
scanf("%d",&len);
str=(char*)malloc(len*sizeof(char));
为str分配分配len个字符大小的空间。

⑵ C语言 可变长数组

我就不看你的bubble sort的算法部分了,直接跟你讲你不知道错误的原因。

你第一种写法:
int n=1, a[n], i=0, j=0, k=0;
这里你已经定义n = 1, 而a[n]也在该行定义。
那么编译器在此就直接给a这个数列分配内存了。
也就是说你a这个数组大小就确定了,即为1。
我不知道你学了内存分配没有,简单给你讲解一下,
具体你可以在网上搜。
比如一个含有5个整数类型的数组可以这样定义a[5],
但是也可以这样获得:int *a = (int *) malloc ( sizeof( int ) * 5 );
也就是说我们给一个指针分配了内存,从而得到一个数组,
而a[5]这样定义也是需要编译器在编译程序的时候分配内存的
而编译器会根据你的代码优化你的程序,并把代码转化为汇编再者machine code

说多了,继续给你分析
你修改过的代码
int n=1, i=0, j=0, k=0;
printf("请输入数组长度:");
scanf("%d", &n);
int a[n]; //修改

这个时候由于你在声明数组之前就已经读入n了,
所以a这个时候才是根据你输入的数字所得大小的数组。

这样你懂我的意思了吗?

⑶ C语言支持可变长数组吗,如果可以请举例书名。谢谢

c99以前的版本是没有的,数组大小必须是常量或者是常量表达式,c99版本才加入变长数组,如:
int add(int n)
{
int a[n];
......
}
即使它叫做变长数组,但是数组大小一旦确定就不能改变了。
很多书里面都有介绍,如《深入理解计算机系统》

⑷ c语言中长度可变的数组

如果一个数组具有动态存储周期(也就是说,如果在语句块内定义数组,并且没有 static 修饰符),那么 C99 也允许把非常量表达式作为元素数量来定义该数组。这样的数组被称为长度可变数组(variable-length array)。

而且,长度可变数组的名称必须是普通的标识符。长度可变数组不能作为结构或联合的成员。在下面的示例中,只有 vla 数组的定义是合法的:
void func( int n ){int vla[2*n]; // 合法:存储周期为动态的static int e[n]; // 非法:长度可变数组不可有静态存储周期
struct S { int f[n]; }; // 非法:f不是一个普通标识符/* ... */}

⑸ 如何在用c语言定义一个可变数组

如果是C++的话可以直接用STL里的vector来实现可变数组。如果必须是C语言的话,可以自己定义链表来实现可变长的数组,具体的实现方法可以找任意一本数据结构的书来看。

⑹ C语言可变数组的初始化问题!求大哥帮助 int main(){

1.后面的类型也有数组,数组只是特殊的结构体,具有相同类型的数据存放到连续的地址上
2
只要相同的类型,相同的编译器,取值范围都是相同的
3
在全局中的变量编译器会自动初始化,但在局部变量中不带初始化的变量是随机值
还有你inta[]错了,不能这样定义
4
char
字符初始化null

⑺ C语言可变长数组问题

可变长数组只有执行了C99标准的编译器里才可以实现, 其他如VC6.0 VS编译器都没执行这个标准,所以没法使用可变长数组,只能动态分配数组。

⑻ c语言可变数组用的多吗

可变数组用于不需要确定数组下标

⑼ C语言如何定义一个可变大小的数组

在C语言中,数组的大小是在定义的时候就需要确定的,不然编译的时候进行分配内存时,会使计算机不知道该分配多少内存单元而报错。


然而,可以根据定义一个链表来达到可变的效果。

链表节点定义如下:

struct
{
intdata;//数据域
structnode*next;//指针域
}*node;
structnodehead,p;
head->data=4;
head->next=p;
p->data=5;

类似的可以将一个节点看成是数组中的一个元素,需要增加元素的时候,就增加链表的节点就可以了。

⑽ 如何声明可变长度的数组 C语言

C99允许用变量做数组下标,也就是可以声明可变长度的数组,但是据我所知,目前还没有C99标准的编译器!VC也不是。但你可以用一个宏定义做嘛,改的时候改宏定义那一个地方就可以了。

热点内容
快速dct算法 发布:2025-02-08 02:19:04 浏览:620
淘宝交易密码如何改 发布:2025-02-08 02:17:32 浏览:772
php的进阶 发布:2025-02-08 02:17:28 浏览:674
服务器关闭中或IP地址错误 发布:2025-02-08 02:16:55 浏览:477
节目脚本是什么 发布:2025-02-08 02:08:54 浏览:141
android的自定义属性 发布:2025-02-08 02:07:27 浏览:607
怎么看电脑的用户名和密码 发布:2025-02-08 02:02:48 浏览:796
vb动态数据库 发布:2025-02-08 02:01:53 浏览:111
一台存储可以配几个扩展柜 发布:2025-02-08 01:53:22 浏览:566
分布式存储技术优缺点 发布:2025-02-08 01:51:37 浏览:245