数组是很多数的组合
条件:1、这些数存放类型相同,2、在内存中必须是连续存储的
数组的初始化
type_t arr_name [const_n];
const_n 只能是常量表达式
type_t 数组的类型
arr_name 数组名
在定义数组时,需要指定数组中元素的个数。方括号中的常量表达式就是用来指定元素的个数。数组中元素的个数又称数组的长度。
下面就是错误的定义,n不是常量表达式
int n = 10;
int arr1[n];
但可以用 #define 定义n
C语言中,可以用 #define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。
数组内存放的元素的下标从 0 开始。
h 是 arr[0],e 是 arr[1]·······以此类推
int arr1[] = {'h','e','l','l','o'};
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "hello";//h e l l 0 \0
char arr2[] = { 'h','e','l','l','o' };//h e l l o
printf("%d\n", strlen(arr1));//结果 5,数组arr1 元素 \0 前的元素 = 5
printf("%d\n", sizeof(arr1));//结果 6,数组arr1 元素所占空间,h e l l o \0
printf("%d\n", strlen(arr2));//结果 随机值,数组arr2中找不到 \0
printf("%d\n", sizeof(arr2));//结果 5,数组arr2 元素所占空间,h e l l o
return 0;
}
数组 arr1 中的元素 h 、e 、l 、l 、o 、\0
char arr1[] = "hello";
数组arr2 中的元素 h、e、l、l、o
char arr2[] = {'h','e','l','l','o'};
strlen 库函数
头文件 <string.h>
计算数组内 \0 前的的元素,直到遇到 \0 停止,如果数组内未找到 \0 则返回值为随机数
只能求字符串长度
strlen(arr1) == 5
strlen(arr2) == 随机值
sizeof 操作符,运算符
返回一个变量或者类型的大小(以字节为单位)
sizeof(arr1) == 6
sizeof(arr2) == 5
方括号 [ ] 下标引用操作符, 数组访问操作符
#include<stdio.h>
#include<string.h>
int main()
{
char arr[]="Hello~World";
int i=0;
for(i=0;i<(int)strlen(arr);i++)//strlen 返回值是无符号型的,可以强制类型转换成 int
{
printf("%c",arr[i]);
}
return 0;
}
一维数组的创建
打印数组地址
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
printf("arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
运行结果: 64位下(32位下相差2)
数组元素在内存中必须是连续存储的
二维数组的创建
int arr[3][4];
char arr[3][4];
double arr[4][5];
二维数组的初始化
int arr1[3][4] = {1,2,3,4};
int arr2[3][4] = {
{1,2},{3,4}};
int arr3[][4] = {
{1,2},{3,4}};
int arr[3][4]; 是 3 行 4 列,行可以省略,列不能省略
arr[0][0] arr[0][1] arr[0][2] arr[0][3]
arr[1][0] arr[1][1] arr[1][2] arr[1][3]
arr[2][0] arr[2][1] arr[2][2] arr[2][3]
二维数组的打印
#include<stdio.h>
int main()
{
int arr[3][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };
int i = 0, j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
return 0;
}
二维数组的输入,及二维数组的地址
#include<stdio.h>
int main()
{
int arr[3][4];
int i = 0, j = 0;
printf("输入二维数组arr[3][4],用空格分开:");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%d", &arr[i][j]);
}
}
printf("数组的打印:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("数组的地址:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("arr[%d][%d] = %p\n", i, j, &arr[i][j]);
}
printf("\n");
}
return 0;
}
64位
二维数组本质上也是一维数组
今天的文章【C语言】数组_c语言结构体数组「建议收藏」分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/57879.html