• 指针与数组实例练习(指针运算)


    数组元素的指针就是数组元素的地址。C语言中,数组名代表数组中首元素的地址,因此p=&a[0]等价于p=a,即把数组a的首元素的地址赋给指针变量p。

    在指针指向数组时,可以对指针进行运算:

    加一个整数:p+1;//指向同一数组的下一个元素

    减一个整数:p-1;//指向同一个数组的上一个元素

    自加运算:p++,++p;   自减运算:p--,--p;

    两个指针相减:p1-p2;(当p1和p2指向同一数组元素时)//计算p1和p2所指元素的相对距离

    例1:利用指针,输出数组中的全部元素。

     1 int main()
     2 {
     3     int a[10];
     4     int *p,i;
     5     printf("please enter 10 integer numbers:
    ");
     6     for(i=0;i<10;i++)
     7     {
     8         scanf("%d",&a[i]);
     9     }
    10     for(p=a;p<(a+10);p++)
    11     {
    12         printf("%d,",*p);
    13     }
    14     printf("
    ");
    15     return 0;
    16 }
     1 int main()
     2 {
     3     int i,a[10],*p=a;
     4     printf("please enter 10  integer numbers:
    ");
     5     for(i=0;i<10;i++)
     6        scanf("%d",p++);
     7     p=a;
     8     for(i=0;i<10;i++,p++)
     9        printf("%d, ",*p);
    10     printf("
    ");
    11     return 0;
    12 }

    两种方式,体现指针使用的灵活多样,我个人感觉这也是指针之所以难理解的原因。

    例2:将数组a中n个整数按相反顺序存放。

     1 int main()
     2 {
     3     void inv(int x[],int n);
     4     int i,a[10]={21,3,56,25,5,7,33,78,2,9};
     5     printf("The original array:
    ");
     6     for(i=0;i<10;i++)
     7        printf("%d ",a[i]);
     8     printf("
    ");
     9     inv(a,10);
    10     printf("The array has been inverted:
    ");
    11     for(i=0;i<10;i++)
    12        printf("%d ",a[i]);
    13     printf("
    ");
    14     return 0;
    15 }
    16 void inv(int x[],int n)
    17 {
    18     int temp,i,j,m=(n-1)/2;
    19     for(i=0;i<=m;i++)
    20     {
    21         j=n-1-i;
    22         temp=x[i];
    23         x[i]=x[j];
    24         x[j]=temp;
    25     }
    26     return;
    27 }
  • 相关阅读:
    继承与 接口
    数组
    字符串加密
    类与对象
    java 方法学习
    课堂练习
    第一次课堂任务记录。整形数字相加合输出
    《大道至简》第二章 读后感
    大道至简第二章
    大道至简第一章
  • 原文地址:https://www.cnblogs.com/wxywxy/p/6863608.html
Copyright © 2020-2023  润新知