【C语言】深入理解一维数组

(一)一维数组

类型名 数组名[正数常量表达式]

(二)区分一级指针和一维数组名

#include <stdio.h>

int main()
{
	int arr[5];
	int*p = arr;
	printf("size of arr : %d\n", sizeof(arr));
	printf("size of p : %d\n", sizeof(p));
	return 0;
}

结果:
在这里插入图片描述
分析结论:

  • arr数组名代表整个数组的大小 sizeof(int) * 5 = 20字节,类型为int[5]
  • 一级指针p的大小是sizeof(int*) = 4字节

(三)一维数组与函数结合

结合方式就是一维数组是函数的参数列表的一部分
例如:
我们有一个一维数组arr[5],想通过函数ShowArr将数组中的每一元素打印出来

#include <stdio.h>
void ShowArr(int* array, int len)
{
	for(int i =0; i < len; i++)
	{
		printf("%d ", array[0]);
	}
	printf("\n");
}
int main()
{
	int arr[5] = {1, 2, 3, 4, 5};
	ShowArr(arr, 5);
	return 0;
}

分析:我们为什么使用指针作为形参,并且还要将数组的长度传进来呢?
首先分析 形参arr只是一个int*类型的指针,主函数在传递参数时等价于 int* array = arr ,array指向的其实是arr首先元素的地址(&arr[0]),此时若不传进数组的长度, 我们就不知道该输出多少个元素;

(四)一维数组做函数形参的退化

在(三)中我们已经掌握了指针作为函数形参来访问一维数组的每个元素,下面这种方式int array[]

void ShowArr(int array[], int len)
{
	for(int i =0; i < len; i++)
	{
		printf("%d ", array[0]);
	}
	printf("\n");
}

此时的形参arr[]就会退化成int*类型的指针
在这里插入图片描述
所以该种方式也可以成功将数组的首地址传进函数ShowArr()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值