欢迎访问C语言3分钟系列。花3分钟时间,学习或温习一个C语言知识点。今天是第3篇。

C语言3分钟系列,练习一下指针的一些基本操作,练习指针,使用指针_简单实现

今天我们来练习一下指针的一些基本操作,练习指针,使用指针。我们使用两个基础的程序来进行练习

C语言3分钟系列,练习一下指针的一些基本操作,练习指针,使用指针_简单实现_02


函数指针数组结合

对于之前讨论过的指针,今天我们来对其进行练习,今天结合函数指针和数组写一个最基本的程序。要求:输入数值,存入数组,再通过指针输出。

以下我们来做个简单的例子:

#include <stdio.h>

void InitArr(int *parr,int len)
{
	for(int i = 0;i < len;i++)
	{
		printf("请输入第%d个值:",i+1);
		scanf("%d",parr++);
	}
}

void PrintArr(int *parr,int len)
{
	for(int i = 0;i<len;i++)
	{
		printf("%d ",*parr++);
	}
}

int main()
{
	int arr[5];
	int len = sizeof(arr)/sizeof(arr[0]);
	// 初始化
	InitArr(arr,len);
	// 输出
	PrintArr(arr,len);
	return 0;
}

练习之数组翻转

接下来我们完成一个练习,要求是将数组中的数值输入保存之后,翻转之后再输出到屏幕上。

我们首先分析,我们需要对数值进行翻转,我们首先是要取中间值,而中间值又有奇数偶数之分。我们不妨举例,如果数组有4个数字,那么在写for()循环时,跳出循环的条件就正好是4/2=2。那如果是5个数字呢,我们发现也可以用5/2由于/整除符号会舍弃后面的。所以我们for循环就 完全可以写成len/2.

以下为简单实现的案例。

# include <stdio.h>

void InitArray(int *arr,int size)
{
	for(int i = 0;i< size ; i++){
		printf("请输入第%d个数字:",i+1);
		scanf("%d",arr++);
	}
}

void PrintArray(int *arr,int size)
{
	for(int i = 0;i<size ;i++){
		printf("%d ",*arr++);
	}
	putchar('\n');
}

void TraleArray(int *arr,int size){
	int tam;	
	for(int i = 0;i < size /2 ;i++){
		tam = *(arr+i);
		*(arr+i) = *(arr+size-1-i);
		*(arr+size-1-i) = tam;
	}
}

int main()
{
	int arr[5];
	int size = sizeof(arr)/sizeof(arr[0]);
	InitArray(arr,size);
	PrintArray(arr,size);
	TraleArray(arr,size);
	PrintArray(arr,size);
	return 0;
}

C语言3分钟系列,练习一下指针的一些基本操作,练习指针,使用指针_简单实现_03

看到运行结果,成功运行,算是基本的实现了。

总结

在使用函数的时,如果需要改变数组的值,我们可以使用指针来接收传递过来的值。

也可以void InitArray(int arr[],int size)像这样继续使用一个数组来接收首地址。


如果你希望我更新某个特定小知识,欢迎给我留言。

我是坏柠,公众号坏柠编程,编程,聊程序员人生

C语言3分钟系列,练习一下指针的一些基本操作,练习指针,使用指针_i++_04