打印数组的多种方式

当我们创建了一个数组时,往往需要打印该数组让程序员或客户端看到,但是在不同情况下不同的打印数组方法或许有不同的效果,我们以打印数组int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }为例

1.使用循环结构直接打印

#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int count = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
		for (i = 0; i < count; i++)
		{
			printf("%d ", arr[i]);
		}
	return 0;
}

这行定义了一个包含 10 个整数的数组arr,并初始化了数组元素的值分别为 1 到 10。

 sizeof(arr)计算整个数组arr所占的字节数,sizeof(arr[0])计算数组中单个元素所占的字节数,两者相除得到数组中元素的个数,这里count的值为 10。

然后定义了一个循环变量i并初始化为 0。

for循环从i = 0开始,每次循环i增加 1,直到i等于count(即 10)为止。

在循环体内部,printf("%d ", arr[i]);用于打印数组arr中索引为i的元素,每个元素之间用空格分隔。

总的来说,这段代码的功能是创建一个整数数组,计算数组元素的个数,然后通过循环遍历数组并输出数组中的每个元素。

这是个C语言初学者基本都会的打印方式。

2.使用指针完善循环体结构

#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	//              0 1 2 3 4 5 6 7 8 9  
	int count = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	int * p = &arr[i];
		for (i = 0; i < count; i++)
		{
			printf("%d ", *p);
			p++;
		}
	return 0;
}
在使用指针打印时,我们要知道指针+-整数是 指针的类型决定了指针向前或者向后走⼀步有多大
因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸瓜就能找到后面的所有元素。
这也是一种不错的方法。
但是我们再思考一下就会发现p + i = p + i * sizeof(int)
于是我们可以再优化一下,如下所示:
#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	//              0 1 2 3 4 5 6 7 8 9  
	int count = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	int * p = &arr[i];
		for (i = 0; i < count; i++)
		{
			printf("%d ", *(p + i));
		}
	return 0;
}

这也是一种思路,也是巧妙了一些。

3.使用基于范围的for循环

#include <iostream>
int main()
{
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    for (int value : arr)
    {
        std::cout << value << " ";
    }

    return 0;
}

使用基于范围的for循环遍历数组arr,每次循环将数组中的一个元素赋值给value,然后通过std::cout输出这个元素的值并在后面跟一个空格。

这样可以更加简洁、直观地遍历数组中的元素,而不需要像传统的 C 风格循环那样通过索引来访问数组元素,当然这是涉及C++的内容。

以上是近期学习能遇见和想到的打印数组的方式,欢迎大家补充更多其它方式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值