C语言 数组相关知识点

c语言 2021-10-22

一:一维数组

1:数组的定义
(1).数组类型 + 数组名 + [长度];

int arr[10]; //定义数组的类型为整型,数组名为arr,长度为10。

(2).数组定义时不给长度,编译器会通过赋的值推算长度是多少。

(3).数组名相关问题:
①数组名还可以表示数组首元素的地址;

int main() 
{
	int arr[9] = { 1,2,3,4,5,6,7,8,9 };
	printf("%d %d\n", &arr, &arr[0]);
}

运行结果:
在这里插入图片描述
由运行结果可知 数组名可以表示数组首元素的地址

②数组名只有两种情况下表示整个数组:
在定义数组的同一个函数内,sizeof(arr),这里的arr代表整个数组
在定义数组的同一个函数内,&arr+1,这里的arr代表整个数组

2:数组的初始化
(1).寻常初始化

int brr[5]={1,2,3,4,5};//数组brr中存储1,2,3,4,5。

(2).数组只赋值一部分,剩余部分则全为0

#include<stdio.h>
int main()
{
	int crr[5] = { 1,2,3 };
	for (int i = 0; i < 5; i++)
	{
		printf("%d\t", crr[i]); // \t为中间间隔八个字节
	}
}

运行结果为:
在这里插入图片描述

(3).数组只定义,不初始化其中的值为全部随机值(可能会出现如下的结果,这个结果就是随机值)
在这里插入图片描述
(4).数组赋0值的三种方法
①大括号里不写任何东西
②括号内只写一个0
③括号内将所有的值均写出来

#include<stdio.h>
int main()
{
	int drr[5] = {};
	int err[5] = {0};
	int frr[5] = {00000};
	for (int i = 0; i < 5; i++)
	{
		printf("%d\n", drr[i]);
	}
	for (int j = 0; j < 5; j++)
	{
		printf("%d\n", drr[j]);
	}
	for (int k = 0; k < 5; k++)
	{
		printf("%d\n", drr[k]);
	}
}

在这里插入图片描述

3:数组的访问
(1).通过下标访问

(2).数组中括号中间的值什么时候代表长度?
当数组定义的时候,中括号中间的值代表着长度,并且必须是常量。

(3).数组中括号中间的值什么时候代表着下标?
当数组使用的时候,中括号中间的值代表着下标,可以是常量,也可以是变量。

4:数组长度的求法
公式: sizeof(arr)/sizeof(arr[0])
数组整个的字节/第一个格子的字节 == 有多少个格子
注意:求数组长度公式只能用在,定义这个数组的同一个函数内部。

5: 数组越界问题
访问到不属于自己的内存,会发生数组越界,不安全。

二:二维数组

1.二维数组定义:
类型 数组名[行号][列号];

2.二维数组初始化:
二维数组默认:行优先
int arr[][4];ok 因为默认行优先,所以行号可以省略,而列号不能省
int arr[3][];//error

3.二维数组的使用:
二维数组名做函数参数传递的时候, 行信息会丢失,列信息不会丢失

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mi ronin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值