栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
      • (一)一维数组
      • (二)区分一级指针和一维数组名
      • (三)一维数组与函数结合
      • (四)一维数组做函数形参的退化

(一)一维数组

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

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

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

结果:

分析结论:

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

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

#include 
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()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号