5つの要素を持つ配列aがあり、配列の5つの要素がキーボードから入力されたとします。サブ関数を呼び出して、配列要素を逆に格納します

逆順の配列ストレージは、ポインターなしで実装できます。前のブログで述べたように、
この共有はポインターの実装に焦点を当てています。

コード表示:

#include <stdio.h>
void fan(int *x,int n);
int  main()
{
    
    
 int i,arr[5],*p=arr; //定义一个数组,再定义指针变量将数组名赋值给指针变量。
 printf("The original array:\n");
 for(i=0;i<5;i++,p++)
   scanf("%d",p);//作输入p即表示每一个数组元素的地址
 printf("Output:\n");

p=arr;//再次赋值传递给子函

 fan(p,5); 
 printf("The array has been inverted:\n");
 for(p=arr;p<arr+5;p++)
   printf("%d ",*p);
 printf("\n");
 return 0;
}

void fan(int *x,int n)
 {
    
    

int temp,i;

for(i=0;i<n/2;i++)
{
    
    
	temp=*(x+i);
	*(x+i)=*(x+n-i-1);
	*(x+n-i-1)=temp;
}

 }

コード分​​析は、コードに1つずつ反映されます。

for(i=0;i<n/2;i++)
{
    
    
	temp=*(x+i);
	*(x+i)=*(x+n-i-1);
	*(x+n-i-1)=temp;
}

この部分はコアアルゴリズムであり、逆の順序で格納されます。最初にこのアルゴリズムを思い付くのは簡単ではありません。私にとって、C言語のトピックのほとんどは、ルールを見つけるようなものです。アルゴリズムについて考えるのは非常に困難です。興味があれば、アルゴリズムの紹介を購入することができます。

おすすめ

転載: blog.csdn.net/yooppa/article/details/114485538
おすすめ