数组名与指针举例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/milustarting/article/details/71365405

输入一行数,使这行数逆序输出来。

#include <stdio.h>

void main()
{
        void inv(int *x,int n);               /*声明一个函数,形参为指针变量,int n可以理解为指针指向的地址的个数。*/
        int i,a[10] = {3,7,9,11,0,6,7,5,4,2};
        printf("The original array ;\n");
        for( i = 0 ; i < 10 ; i++ )           /*利用循环语句将数组a的值打印出来。*/
        {
            printf("%d",a[i]);
        }
        printf("\n");
        inv(a,10);                                 /*调用函数,改变数组元素的次序。*/
        printf("The array has inverted :\n");
        for( i = 0 ; i < 10 ; i++ )           /*再次使用循环语句将函数改变的数组元素再次打印出来*/
        {
            printf("%d",a[i]);
        }
        printf("\n");
}
void inv(int *x,int n)                     /*定义函数,并将调用函数的实参数组名a(即数组a的首地址),以及元素个数传递给形参 指针变量x。*/
{
        int *p,*i,*j,temp,m = ( n-1)/2;       
        i = x;                                       /*将指针变量x的地址传送给指针变量i,下同*/
        j = x+n-1;                               /*将数组a的最后一个地址传送给j,因为n = 10,j=x+9(即表示最后一个地址)。*/ 
        p = x+m;                            
        for(; i<=p;i++,j--)
        {
                temp = *i;                       /*将指针变量i的值赋给temp。*/
                *i = *j;

                *j = temp;

        }

}

本函数为顺序结构,先输入,在调用函数改变顺序,再讲改变后的结果输出,最后在定义调用的函数,可以提供一种写代码的思路。

猜你喜欢

转载自blog.csdn.net/milustarting/article/details/71365405