时间:2021-05-02
数组
可以存储一组或者多组数值的变量,里面包含多个元素,数组的每个成员都是一个数组元素。
一维数组
定义:类型 数组名[常量表达式] = {值1, 值2, 值3…};
? 1 2 3 4 int a[3] = {0, 1, 2}; float f[2] = {1.2, 2.3, 3.14}; char str[] = {'h', 'e', 'l', 'l', 'o'}; chat str1 = "iPhone";//这也是定义字符数组的方法,字符数组后面会详细讲解,这里先了解一下当数组元素个数为变量时,只能声明数组,不能直接赋值:
? 1 2 3 int length = 4; int a[length]; //这样可以 int a[length] = {2, 4, 6, 8};//这样的话就会报错注意事项:
1、系统不会检测数组元素的下标是否越界,编程时,必须保证数组下标不能越界。
2、不能这样定义数组 int array[] = {}; //数组个数和初始值不能同时为空
3、也不能这样定义数组 int array[2] = {1, 2, 3}; //数组的值的个数大于数组的个数
4、数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环
常见数组操作
如果初始化数组的时候,数组的元素个数确定,那么常量表达式可以不写:
int 就是数组类型,表示这个数组中的每个元素都是 int 类型。
访问:通过数组名+下标去访问数组中的元素,而且注意数组的下标是从 0 开始的,a[0] 就是第一个元素,a[1] 代表第二个元素,a[2] 代表第三个元素。所以数组的最后一个元素就是 数组的长度 – 1,一定不要写a[3],这样的话就属于数组越界。
在数组的访问的时候我们通常会通过 for 循环来操作,这个操作一般称为遍历
? 1 2 3 4 5 6 7 8 9 10 11 12 int ages[28]; //循环赋值 for(int i = 0; i < 28; i++) { int age = arc4random() % 13 + 18;//每个人的年龄的范围是:18 ~ 30 之间的随机值 ages[i] = age;//给每个元素赋值 } //访问,也叫遍历 for(int i = 0; i < 28; i++) { printf("a[%d] = %d ", i, ages[i]); }两个数组的每个元素对应相加,相加的和存放到第三个数组中:
? 1 2 3 4 5 6 7 8 int a1[] = {2, 4, 5, 6, 10}; int a2[] = {1, 3, 4, 5, 6}; int a3[5]; for(int i = 0; i < 5; i++) { a3[i] = a1[i] + a2[i]; printf("a3[%d] = %d ", i, a3[i]); }输出结果为:
? 1 a3[0] = 3 a3[1] = 7 a3[2] = 9 a3[3] = 11 a3[4] = 16数组的长度如何计算:
sizeof(数组名)/sizeof(数组第一个元素)
? 1 2 3 int arr[] = {2, 3, 4, 6, 7}; int length = sizeof(arr) / sizeof(arr[0]); printf("length = %d\n", length);输出结果为:
? 1 length = 5字符数组:用于存放字符变量的数组称为字符数组,有两种定义格式:
? 1 2 char str[4] = {'a', 'b', 'c', 'd'}; char str2[] = "iPhone";//另外一种方式字符串的输出:
? 1 printf("str2 = %s\n", str2);//%s 输出字符串,遇到 '\0' 结束有'\0'结束标识的字符数组也称为字符串,系统提供了许多的一些字符串的函数
size_t strlen(const char *):计算字符串长度,是字符串的有效长度,不算'\0′
? 1 2 3 char str[] = "iPhone"; unsigned long length = strlen(str);//strlen 表示有效长度 printf("length = %lu\n", length);输出结果为:
? 1 length = 6strlen() 的实现原理:就是遍历字符串,当遇到 ‘\0′ 的时候就结束。
char *strcpy(char *, const char *):字符串拷贝
? 1 2 3 char str1[] = "Unity"; char str2[] = "Android....."; printf("%s\n", strcpy(str1, str2));输出结果:
? 1 Androidchar *strcat(char *, const char *):字符串拼接
? 1 2 3 char str1[] = "Unity"; char str2[] = " iPhone"; printf("%s\n", strcat(str1, str2));输出结果:
? 1 Unity iPhoneint strcmp(const char str1*, const char str2*):字符串比较,并且根据 str1 按照字典顺序小于、等于或大于 str2 的结果分别返回负整数、0或正整数。该返回值是 str1 和 str2 由前向后逐字符比较时遇到的第一个不相等字符处的字符的差值
? 1 2 3 char str1[] = "Unity"; char str2[] = "iPhone"; printf("%d\n", strcmp(str1, str2));输出结果:
复制代码 代码如下: -20 指针访问数组程序输出:
? 1 2 3 4 5 6 7 8 9 10 76 85 90 67 59 79 82 95 91 65数组下标与指针关系很密切。执行语句 pa = &a[0] 后,pa 和 a 就具有相同的值了,并且 *pa=a[0]。实际上C语言在计算数组下标时也是使用指针来完成的。下标与指针其实是等价的。
当把一个数组名传递给一个函数的时候,实际上传递的是该数组的第一个元素的地址。所以,数组名参数必须是一个指针。
计算字符串长度的程序可以写成以下:
? 1 2 3 4 5 6 7 8 int strlen(char *s) { int n; for(n = 0; *s != '\0'; s++) n++; return n; }s 是指针,也就是一个变量,对它进行自增是合法的。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C/C++动态数组的创建的实例详解在C++语言中,二维动态数组主要使用指针的方法建立,以建立一个整数二维数组为例:#include#include#includ
C#数组有很多值得学习的地方,这里我们主要介绍C#交错数组,包括介绍一维数组例、二维数组例、C#交错数组等方面。数组是在我们编程当中经常用到的,想来大家对数组都
详解C语言用malloc函数申请二维动态数组的实例C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单。Sampleone#includ
c语言定义数组的方法是:C语言中,同变量一样;数组也必须先定义后使用。一维数组的定义形式。 1、类型标识符,数组名[常量表达式];例如inta[10];其中a
C语言中,指针是一个复杂但又灵活多变的知识点,我们知道,在一维数组中,对于一个数组a[],*a,a,&a,都表示a的首地址,但如果与二维数组混合使用,就显得更为