欢迎访问C语言3分钟系列。花3分钟时间,学习或温习一个C语言知识点。今天是第3篇。
今天我们来练习一下指针的一些基本操作,练习指针,使用指针。我们使用两个基础的程序来进行练习
函数指针数组结合
对于之前讨论过的指针,今天我们来对其进行练习,今天结合函数指针和数组写一个最基本的程序。要求:输入数值,存入数组,再通过指针输出。
以下我们来做个简单的例子:
#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;
}
看到运行结果,成功运行,算是基本的实现了。
总结
在使用函数的时,如果需要改变数组的值,我们可以使用指针来接收传递过来的值。
也可以void InitArray(int arr[],int size)像这样继续使用一个数组来接收首地址。
如果你希望我更新某个特定小知识,欢迎给我留言。
我是坏柠,公众号坏柠编程,聊编程,聊程序员人生。