网站首页 > 基础教程 正文
数组是语言中常用的一种结构,在c语言中可以使用多种方式来创建数组,每种语法对应于不同的应用场景。
1、在声明数组时指定数组的长度
语法
<类型> <变量>[<长度>];
当填充数组的内容为运行时动态加入时可以使用此语法,此语法根据长度预先分配空间,在运行根据业务赋予不同的值。
示例
从控制台接收2个数的输入填充数组,然后输出
#include <stdio.h>
int main(){
int num[2];
for(int i = 0;i < 2 ;i++){
int x;
printf("请输入第%d个数:",(i +1) );
scanf("%d",&x);
num[i] = x;
}
for(int i = 0;i<2;i++){
printf("%d\n",num[i]);
}
}
2、使得初始值初始化长度
语法
<类型> <变量>[] = {<初始值列表>};
当数组的值在开发时即已经确定时,可以使用此语法,比如在进行身份证最后一位的合法性验证时用到的校验码,还有小写数字转中文大写数字时的大写数字都可以使用这个语法。
示例
#include <stdio.h>
int main(){
int num[] = {1,2,3,4,5}; //初始化数组,数组长度为初始值的数量
for(int i = 0;i<5;i++){
printf("%d\n",num[i]);
}
}
这种语法需要注意的是,它只能是一条语句,不能拆成两句来实现
int num[]; //未指定数组的长度,无法分配空间
num = {1,2,3,4,5};
3、声明指定长度,并用部分值进行初始化
语法
<类型> <变量>[<长度>] = {<初始值列表>};
此语法会创建一个指定长度的数组,并和初始值填充数组前面的部分,如果初始值列表大于指定的长度,则只填充指定长度的值。这种语法常用于已知固定前缀的数据,比如在定义一个信息模板数组时,信息总是以“XXX”开头,此时可以此语法。
示例
#include <stdio.h>
int main(){
int num[3] = {1,2,3,4,5};
for(int i = 0;i<5;i++){
printf("%d\n",num[i]); //只有1、2、3被填充,4和5被抛弃
}
}
但是需要注意的是,此语法的长度只能使用常量,如果是变量会在编译时报错
int x = 2;
int num[x] = {1,2,3,4,5};
4、使用动态方式分配数组长度
语法
<类型> *<变量名> = malloc(sizeof(<类型>) * <长度>);
此方式可用于函数数组的返回,由于在函数内定义的数组属于函数的局部变量,在其它函数中无法访问此变量。使用malloc动态分配空间可解决此问题
示例
#include <stdio.h>
int *fun(){
int *num = malloc(sizeof(int) * 2); //动态创建长度为2的整型数组
num[0] = 1;
num[1] = 2;
return num;
}
int main(){
int *num = fun();
for(int i = 0;i<2;i++){
printf("%d\n",num[i]);
}
}
文章来源于哔站《c语言中数组的四种创建方式和应用场景 - 哔哩哔哩》
更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-个人主页-哔哩哔哩视频
更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ :开源吧
猜你喜欢
- 2024-11-18 C语言探索之旅:数组
- 2024-11-18 数组及在Excel中应用
- 2024-11-18 机器学习实战:Numpy多维数组的创建、索引与切片
- 2024-11-18 非理工科编程零基础文科生秒懂python学习笔记Numpy创建数组9妙方
- 2024-11-18 5分钟课堂:Java数组
- 2024-11-18 VBA字典与数组第十八讲:VBA中静态数组的定义及创建
- 2024-11-18 18.C语言:实践:创建一个动态数组库
- 2024-11-18 在JavaScript中,如何创建一个数组或对象?
- 2024-11-18 NumPy 基础知识 — 创建和操作数组
- 2024-11-18 掌握数组公式,从小白走向大师的必经之路,小白?或大师?
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)