c语言数组详细总结

1.数组——相同元素类型的集合

2.数组创建    type_t         arr_name      [const_n]

                    数组类型        数组名        常量表达式(用来指定数组大小)  

    eg:

     int arr1[10];
     char arr2[5];

注释:方括号里面只能放常量表达式 比如:3 ,4, 4+3

3.数组的初始化(一般在创建数组时会对数组进行初始化)

    eg:

       int arr1[3]={1,2,3};//可以

       int arr2[3]={1,2,3,4};    //不可以,数组内容超过了数组规定的长度。

       int arr3[]={1,2,3};   //可以,若方括号里面不填常量表达式则会通过初始化内容判断元素个数 。

       int arr4[];                 //不可以,常量表达式和初始化必须完成一个。

       int arr5[10]={1,2,3};         //可以,为不完全初始化,剩下元素默认初始化为零。
       char arr6[3]={'a','b','c'};   //可以

       char arr7[3]={'a','98','c'};     //可以,98会根据ASCII表转化为对应字符b

       char arr3[4]={"abc"}            //可以,里面存了四个元素,'a','b','c','\0'

4.数组的使用

通过下标方式使用来调用数组中的元素,第一个元素的下表是零

将任意一个小于等于255的整数转化为一个8位二进制数字

#include<stdio.h>

#define N 8  //固定位数(宏)

int main()

{
	int arr[N] = { 0 };//将数组初始化为0(位数不满时,将输出0填补)

	int i;

	int n;

	printf("请输出一个整数:\n");

	scanf_s("%d", &n);
	if (n > 255)
	{
		printf("输入错误\n");
		return 0;
	}



	for (i = N - 1; i >= 0; i--)  //对数组从后往前赋值

	{
		arr[i] = n % 2;

		n = n / 2;

	}

	printf("输出一个八位二进制:\n");

	for (i = 0; i <= N - 1; i++)

	{
		printf("%d", arr[i]);

	}

	return 0;

}

执行结果 

 五,一维数组的储存

打印出地址

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) /sizeof( arr[0]); //计算数组元素的个数
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("arr[%d]=%p\n", arr[i],&i);
	}
}

执行结果 

 由从输出结果我们可以看出数组元素在内存中的存储是:地址是由低到高并且是连续存储的。

六.二维数组的创建

数组创建    type_t         arr_name      [const_n] [const_n]

                   数组类型        数组名        常量表达式(用来指定数组大小)

注释:可将二位数组理解为一个表格第一个方括号理解为行数第二个方括号理解为列数。

七,二维数组的初始化

int arr[3][4] = { 1, 2, 3, 4, 5, 6 };可以,第一行1,2,3,4第二行5,6,0,0第三行全是零
int arr[][4] = {{1, 2},{3, 4, 5},{6}};可以第一行1,2,0,0第二行3,4,5,0第三行6,0,0,0
int arr[3][] = {{1, 2},{3, 4, 5},{6}};是不可以的

注释:列数必须规定,行数可以省略

八,二维数组的使用(通过下标使用)

#include<stdio.h>

int main()
{
	int arr[3][5] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			arr[i][j] = i * 5 + j + 1;
		}
	}

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}


	return 0;
}

执行结果

 九.二位数组的储存

将地址打印出来

#include<stdio.h>

int main()
{
	int arr[3][5] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("&arr[%d][%d] = %p\n", i, j, &arr[i]);
		}
	}


	return 0;
}

 结果

 从结果看出二维数组的中元素在内存中都是连续存放的

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

binary~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值