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

C语言入门基础

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

C语言入门基础

数组:一组相同类型元素的集合

一维数组创建方式:元素类型 数组名 [常量表达式]

例如: int arr[8]; char ch[5];

易错点:

int n = 8;
int arr[n];

该写法是错误的,因为括号里必须是[常量表达式],而n是变量。

一维数组的完全初始化: int arr[10] = { 1,2,3,4,5 ,6,7,8,9,10 };

一维数组的不完全初始化: int arr[10] = { 1,2,3,4,5 };

另外,int arr2[] = { 1,2,3,4,5 }; 相当于 int arr2[5] = { 1,2,3,4,5 };

知识点1:下标引用操作符和数组大小的计算

int main()
{
	int arr[10] = { 0 };
	arr[4] = 5;    //[]就是下标引用操作符
 
	int sz = sizeof(arr) / sizeof(arr[0]);    //数组的大小
	printf("数组的大小:%dn", sz);

	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
 
	return 0;
}

[]就是下标引用操作符,数组的大小用sizeof(arr) / sizeof(arr[0])来计算

运行结果:

 

总结:
1、数组通过下标来访问,下标是从0开始。
2、数组的大小可以通过计算得到。

知识点2:一维数组在内存中的地址

int main()
{
	int arr[10] = { 0 };
	for (int i = 0; i < 10; i++)
	{
		printf("&arr[%d] = %pn",i, &arr[i]);//可以发现每个数之间相差四个数(十六进制)
	}
	return 0;
}

%p - 是按地址的格式打印 - 十六进制的打印

运行结果:

总结:
1、一维数组在内存中是连续存放的
2、随着数组下标的增长,地址是由低向高变化的

 

补充:
 %x - 十六进制
printf("%xn",0x12); //打印结果:12
printf("%pn",0x12); //打印结果:00000012

知识点3:数组名是数组首元素的地址

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p = arr;	//数组名是数组首元素的地址
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", *p);
		p++;
	}
	return 0;
}

运行结果:

例题:从键盘读入n个整数放入数组中,删除数组中所有值为0的元素,其后元素向数组首端移动。输出删除后数组中元素的个数并依次输出数组元素。 

例如,

输入:

6

2 0 4 0 0 3

输出:

3

2 4 3

代码实现:

int main()
{
	int n = 0, i = 0, a = 0 , b = 0;
	int arr[100];
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		scanf("%d", &a);
		if (a)
			arr[b++] = a;
	}
		
	printf("%dn", b);
	for (i = 0; i < b; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

运行结果:

 

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

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

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