-
C语言数组
2016-10-22 17:20:42C语言数组用法讲解。一维数组
形式
/* 形式 */
char cArr[10];//声明一个含十个元素的char数组初始化
/* 1.指定数组长度 */
char cArr[5] = {'a','b','c','d','e'};//数组全部成员初始化
char cArr2[5] = {'a','b'};//数组部分成员初始化,前两个元素为字符a、b,后三个元素为空
/* 2.不指定数组长度 */
char cArr3[] = {'a','b','c','d'};//数组长度是实际元素个数。Len = 4
char cArr4[] = "wenjinxing";//当以字符串形式对数组初始化时,数组长度为字符个数+1.Len = 11使用
数组元素通过数组名加下标访问,如arr[3]访问的是数组arr的第4个元素(因数组下标从零开始)。
多维数组
形式
/* 形式 */
char cArr[3][4];//二维数组,可以理解为3行4列共12个元素。也可以理解为含有三个元素的一维数组,每个元素又是含有4个元素的数组初始化
/* 1.指定数组长度,全员初始化 */
char sArr[2][3] = {'a','b','c','d','e','f'};/* (1)----数组成员全员初始化,[0][0]='a',[0][1]='b',[0][2]='c',
[1][0]='d',[1][1]='e',[1][2]='f'*/
char sArr2[2][3] = {{'a','b','c'},{'d','e','f'}};/* (2)---本例与(1)表达同样的结果 */
/* 2.指定数组长度,部分成员初始化 */
char sArr3[2][3] = {'a','b','c','d'};//(3) ---[0][0]='a',[0][1]='b',[0][2]='c'; [1][0]='d',[1][1]='\0',[1][2]='\0'
char sArr4[2][3] = {{'a','b'},{'c','d'}};//(4) ---[0][0]='a',[0][1]='b',[0][2]='\0'; [1][0]='c',[1][1]='\0',[1][2]='\0'
/* 3.部分指定数组长度 */
char sArr5[][3] = {'a','b','c','d'};//(5) ---[0][0]='a',[0][1]='b',[0][2]='c'; [1][0]='d',[1][1]='\0',[1][2]='\0'
//char sArr6[2][] = {'a','b','c','d'};//(6) 错误语法,不是第一维的长度不能省略。/* 4.以上数组的输出结果如下: */
【总结】
-
数组下标从0开始,数组元素在数组中所处的位置比下标大1.
-
数组在内存中的位置是连续的。
-
数组初始化时若指定了长度,则所占内存为类型字节数乘以长度;若初始化时未指定长度,则所占内存为 类型字节数乘以实际元素个数。
-
对于未全员初始化的数组,依次将数组元素从左到右赋值给下标由小到大的数组变量。未赋值的数组变量则取默认值(一般整型默认值为0,字符型默认值为空)
-
-
c语言数组
2015-03-24 21:35:51c语言数组名字作为函数的形参,传递的是数组中第一个元素在内存中的地址。 求数组长度可以使用sizeof(数组名子)/sizeof(数组基本类型) 如: int a[]={64,5,7,89,6,24}; int len = sizeof(a)/sizeof(int); 但是...c语言数组名字作为函数的形参,传递的是数组中第一个元素在内存中的地址。
求数组长度可以使用sizeof(数组名子)/sizeof(数组元素)
如:
int a[]={64,5,7,89,6,24};
int len = sizeof(a)/sizeof(a[0]);但是对于字符串的字符数组要小心因为字符数组最后一个字符默认存储'\n'
char c[]={“China”};
int len = sizeof(c)/sizeof(c[0])-1;
普通的字符数组:
char c[]={'C','h','i','n','a'};
int len = sizeof(c)/sizeof(c[0]);
void print_array(int b[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ", b[i]);
}
int main()
{
int a[]={64,5,7,89,6,24};
int len = sizeof(a)/sizeof(int);
print_array(a,len);
return 0;
} -
C语言数组——字符数组
2020-02-17 20:59:51C语言目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 ...C语言数组——二维数...C语言目录
C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组
C语言数组——二维数组前面两篇文章分别介绍了一维数组和二维数组,今天我们一起看看字符数组
字符数组
字符数组顾名思义就是数组的元素类型为字符型的数组。特殊之处在于它是数组元素为字符的数组。其定义的一般形式和注意事项与之前讲解的一般数组类似,只是其中的类型说明符是char。当然,并不是说类型说明符只能是char,也可以是long、int等,但是由于char型只占用一个字节的大小,使用long型和int型来定义字符数组会造成资源的浪费,因此一般选择使用char型来定义字符数组。
一维字符数组
首先通过下面一段代码来看看一维字符数组的定义。#include<stdio.h> #define SIZE 20 int main() { long arr1[SIZE] = {'h','e','l','l','o',' ','w','o','r','l','d','!'}; char arr2[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; printf("long型字符数组占用的内存大小为:%d\n", sizeof(arr1)); printf("char型字符数组占用的内存大小为:%d\n", sizeof(arr2)); return 0; }
运行结果:
在上面的代码中定义了不同类型的字符数组来存放相同的字符,可以看出,它们占用的内存大小相差很大,long型字符数组所占用内存大小是char型数组占用内存大小的4倍。从这点可以看出,选用char型作为数组类型避免了内存空间的浪费。下面通过一段代码来了解字符数组的初始化特点。#include<stdio.h> #define SIZE 20 int main() { int i; char arr[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; for (i = 0; i < SIZE; i++) { printf("%c", arr[i]); } return 0; }
运行结果:
运行结果为“Hello World!”,其中有一些空字符。看看上面代码中定义的arr数组,其数组长度为20,而初始化的字符元素的个数为12,初始化的字符元素个数小于数组长度,编译器在编译过程中将后面没有初始化的数组元素赋值为‘\0’,这也正是打印输出中含有空字符的原因。在打印的时候也可以将数组中的元素‘\0’视为数组结束的标志,例如:#include<stdio.h> #define SIZE 20 int main() { int i; long arr[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; for (i = 0; arr[i]!='\0'; i++) { printf("%c", arr[i]); } return 0; }
运行结果:
这时的输出结果中就不含有任何空字符了,因为巧妙地使用了字符数组中的‘\0’标志。当然,也可以采用字符串常量的方式来对一维字符数组进行初始化,例如:#include<stdio.h> #define SIZE 20 int main() { int i; char arr[SIZE] = { "hello world!" }; for (i = 0; arr[i] != '\0'; i++) { printf("%c", arr[i]); } return 0; }
运行结果:
在对一维字符数组进行定义和初始化的过程中,可以不指定其长度。使用字符常量列表和字符串常量的方式进行初始化的结果是不同的,例如:#include<stdio.h> int main() { int i; char arr1[] = { "hello world!" }; char arr2[] = {'h','e','l','l','o',' ','w','o','r','l','d','!'}; printf("采用字符串常量进行初始化的arr1数组的长度为:%d\n", sizeof(arr1)); printf("采用字符常量列表进行初始化的arr2数组的长度为:%d\n", sizeof(arr2)); return 0; }
运行结果:
从运行结果发现,采用这两种方式得到的数组长度并不相同,在采用字符串常量对字符数组进行初始化的过程中,在内存中进行存储时会自动在字符串的后面添加一个结束符‘\0’,所以得到的字符数组长度是字符串常量的长度加1;而采用字符常量列表的方式对字符数组进行初始化就不会在最后添加一个结束符,所以利用这种方式定义的字符数组的长度就是字符常量列表中字符的个数。如果您觉得本篇文章对您有帮助,请转发给更多的人
【C语言中文社区】是一个C语言视频教程、学习笔记、电子书、计算机二级资料等专注于C语言编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。
-
printf打印数组_C语言数组字符数组
2020-12-06 13:05:1801.C语言基础-数据类型02.C语言中算法的基本特性和表达方式03.C语言中的输入输出函数04.C语言基础-循环控制语句05.C语言基础-条件控制语句06.C语言基础-控制语句示例07.C语言数组- 一维数组08.C语言数组- 二维数组...点击上方“学士科技”,选择“设为星标”
资讯、技术干货第一时间送达!
01.C语言基础-数据类型02.C语言中算法的基本特性和表达方式
03.C语言中的输入输出函数
04.C语言基础-循环控制语句
05.C语言基础-条件控制语句
06.C语言基础-控制语句示例
07.C语言数组- 一维数组
08.C语言数组- 二维数组
前面两篇文章分别介绍了一位数组和二维数组,今天我们一起看看字符数组
字符数组
字符数组顾名思义就是数组的元素类型为字符型的数组。特殊之处在于它是数组元素为字符的数组。其定义的一般形式和注意事项与之前讲解的一般数组类似,只是其中的类型说明符是char。当然,并不是说类型说明符只能是char,也可以是long、int等,但是由于char型只占用一个字节的大小,使用long型和int型来定义字符数组会造成资源的浪费,因此一般选择使用char型来定义字符数组。
一维字符数组
首先通过下面一段代码来看看一维字符数组的定义。
#include#define SIZE 20int main() { long arr1[SIZE] = {'h','e','l','l','o',' ','w','o','r','l','d','!'}; char arr2[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; printf("long型字符数组占用的内存大小为:%d\n", sizeof(arr1)); printf("char型字符数组占用的内存大小为:%d\n", sizeof(arr2)); return 0;}
运行结果:
在上面的代码中定义了不同类型的字符数组来存放相同的字符,可以看出,它们占用的内存大小相差很大,long型字符数组所占用内存大小是char型数组占用内存大小的4倍。从这点可以看出,选用char型作为数组类型避免了内存空间的浪费。下面通过一段代码来了解字符数组的初始化特点。
#include#define SIZE 20int main() { int i; char arr[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; for (i = 0; i < SIZE; i++) { printf("%c", arr[i]); } return 0;}
运行结果:
运行结果为“Hello World!”,其中有一些空字符。看看上面代码中定义的arr数组,其数组长度为20,而初始化的字符元素的个数为12,初始化的字符元素个数小于数组长度,编译器在编译过程中将后面没有初始化的数组元素赋值为‘\0’,这也正是打印输出中含有空字符的原因。在打印的时候也可以将数组中的元素‘\0’视为数组结束的标志,例如:
#include#define SIZE 20int main() { int i; long arr[SIZE] = { 'h','e','l','l','o',' ','w','o','r','l','d','!' }; for (i = 0; arr[i]!='\0'; i++) { printf("%c", arr[i]); } return 0;}
运行结果:
这时的输出结果中就不含有任何空字符了,因为巧妙地使用了字符数组中的‘\0’标志。当然,也可以采用字符串常量的方式来对一维字符数组进行初始化,例如:
#include#define SIZE 20int main() { int i; char arr[SIZE] = { "hello world!" }; for (i = 0; arr[i] != '\0'; i++) { printf("%c", arr[i]); } return 0;}
运行结果:
在对一维字符数组进行定义和初始化的过程中,可以不指定其长度。使用字符常量列表和字符串常量的方式进行初始化的结果是不同的,例如:
#includeint main() { int i; char arr1[] = { "hello world!" }; char arr2[] = {'h','e','l','l','o',' ','w','o','r','l','d','!'}; printf("采用字符串常量进行初始化的arr1数组的长度为:%d\n", sizeof(arr1)); printf("采用字符常量列表进行初始化的arr2数组的长度为:%d\n", sizeof(arr2)); return 0;}
运行结果:
从运行结果发现,采用这两种方式得到的数组长度并不相同,在采用字符串常量对字符数组进行初始化的过程中,在内存中进行存储时会自动在字符串的后面添加一个结束符‘\0’,所以得到的字符数组长度是字符串常量的长度加1;而采用字符常量列表的方式对字符数组进行初始化就不会在最后添加一个结束符,所以利用这种方式定义的字符数组的长度就是字符常量列表中字符的个数。
【END】
-
C语言数组+冒泡排序
2019-02-03 17:17:58C语言数组 -
C语言数组入门之数组的声明与二维数组的模拟
2020-09-03 02:44:03主要介绍了C语言数组入门之数组的声明与二维数组的模拟,数组学习的同时也要相应理解C语言指针的作用,需要的朋友可以参考下 -
char 二维数组_C语言数组字符数组
2021-01-18 21:28:0701.C语言基础-数据类型02.C语言中算法的基本特性和表达方式03.C语言中的输入输出函数04.C语言基础-循环控制语句05.C语言基础-条件控制语句06.C语言基础-控制语句示例07.C语言数组- 一维数组08.C语言数组- 二维数组... -
Android NDK - C语言 数组
2020-07-02 12:54:16C语言 数组 -
C语言数组形链表实现
2019-01-27 21:28:21原创C语言数组形链表操作的具体接口,定义简单,逻辑清晰 -
C语言数组练编程习题
2011-10-25 13:14:27C语言数组练编程习题C语言数组练编程习题C语言数组练编程习题C语言数组练编程习题 -
嵌入式面试 C语言 数组之间的赋值,C语言数组之间赋值详解
2019-03-09 21:24:55若定义了一个数组“int a[5]={1,2,3,4,5};”,又定义了一个数组“int b[5];”,那么如何编写程序才能将数组...前面说过,a 和 b 是数组名,而数组名表示的是数组“第一个元素”的“起始地址”。即 a 和 b 表示的是地... -
C语言数组——二维数组
2020-02-07 14:58:35C语言目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 ...C语言数组——一维数组 二维数组 前面介绍了... -
C语言数组选择练习题
2011-10-25 13:15:01C语言数组选择练习题 C语言数组选择练习题 -
C语言数组实现学生信息管理系统设计
2020-08-28 05:49:09主要为大家详细介绍了C语言数组实现学生信息管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
C语言数组实现约瑟夫问题
2020-09-09 20:03:56C语言数组实现约瑟夫问题问题描述要求:用C语言数组结构实现实现代码时间复杂度分析 问题描述 从n个人中抽取一个中奖者,抽取方法如下:所有人围成一圈,第一个人从1开始报数,选定一个数m;报到数m的人出列,下一个... -
C语言数组下标越界
2019-07-13 21:53:27C语言数组下标越界数组越界的严重性下标越界详细分析图后续待补充 数组越界的严重性 在 C 语言中,数组必须是静态的。数组的大小必须在程序运行前就确定下来。 C语言数组越界的严重性在于对数组元素访问及修改的内容... -
C语言数组练习题
2014-06-13 11:49:50C语言数组部分练习题的选择题,带答案,适合初学者对数组部分的练习使用。 -
C语言数组的一些特性
2020-04-18 19:57:45C语言数组的一些特性 -
c语言数组,数组名,内存
2015-03-24 14:41:14求对c语言数组名和数组元素更加深入的理解,老师要我上去讲,求帮忙 -
C语言数组排序
2019-08-22 17:15:40C语言数组元素排序 第一次写,好紧张,那些技术大佬们都在装萌新并且活跃于各大平台,参加各种CTF比赛,而我这种真正的菜鸡只能躲在角落里瑟瑟发抖,光是看他们群里面的聊天记录都感觉胜读了好多年书,唉!!!... -
C语言数组寻址
2019-06-11 10:24:00C语言数组 数组的定义 数组是用来存放数据类型相同且逻辑意义相同的数据 数组的大小 数组的大小不能是变量,必须是常量或者常量表达式,常量表达式由编译器编译时自动求值。 也可以不指定数组大小,但必须对数组进行... -
c语言 数组类型
2019-06-09 21:36:00数组类型重命名数组类型由元素类型和数组大小共同决定数组指针是一个指针,只想对应类型的数组指针数组是一个数组,其中每个元素都是指针数组指针遵循指针运算法则指针数组拥有c语言数组的各种特性 c通过typedef ... -
c语言数组合并
2019-03-15 20:49:04c语言数组合并;注意,在函数中计算数组的长度可能会出错,尽量调用数组长度值 #include <stdio.h> #include <stdlib.h> void mergelist(int *a,int len_a,int *b,int len_b,int *c);... -
C语言数组和PHP数组的区别
2019-08-13 20:18:36C语言数组和PHP数组的区别 1.PHP的数组是数列Array,列表List,散列表/关联数组/字典Hashtable的聚合体,是一个非常高级的数据结构,也是一个优秀的设计。 2.PHP有一套数组功能函数支持php的数组。(强大之处) 3.C... -
C语言数组--数组元素判断查询
2020-08-05 22:42:52C语言数组–数组元素判断查询 1.问题描述 今天在复习C语言的数组部分的内容,然后复习过程有一个题目要去做 在做第三个题目的时候,整个人的思路卡住了,因为if()函数里面不能嵌套for()循环,然后如果在for()函数... -
C语言数组逆序
2018-06-30 09:34:41C语言的数组逆序,很实用的,可以下载试试,哈哈哈哈哈哈哈