• 数组与指针


    一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用储存单元,它们都有相应的地址。

    指针变量既可以指向变量,也可以指向数组元素(把某一元素的地址放在一个指针变量中)。

    所谓数组元素的指针就是数组元素的地址。

    定义一个指向数组元素的指针变量的方法,与指向变量的指针变量相同。

    例:int a[10];

      int *p;

      p=&a[0];

    注:若数组为int型,则指针变量的基类型也为int型。

    引用一个数组元素,可以用:

    (1)下标法,如a[i]形式;

    (2)指针法,如*(a+i)或*(p+i)。

    基中的a是数组名,p是指向数组元素的指针变量,其初值p=a等价于p=&a[0]。

    注:数组名即编译为数组的第一个元素的地址。

    例:输出数组中的全部元素。

    假设一个a数组,整型,有10个元素,要输出个元素的值有三种方法。

    (1)下标法。

    (2)通过数组名计算数组元素地址,找出元素的值。

    (3)用指针变量指向数组元素。

    下标法:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10],i;
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        printf("
    ");
        for(i=0;i<10;i++)
        {
            printf("%d",a[i]);
        }
    }

    指针法:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10],i;
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        printf("
    ");
        for(i=0;i<10;i++)
        {
            printf("%d",*(a+i));
        }
    }

    指针变量法:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10],i,*p;
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        p=a;
        printf("
    ");
        for(i=0;i<10;i++)
        {
            printf("%d",*p);
            p++;
        }
    }

    思考:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10],i,*p;
            p=a;
        for(i=0;i<10;i++)
        {
            scanf("%d",&p++);
        }
        printf("
    ");
        for(i=0;i<10;i++,p++)
        {
            printf("%d",*p);
        }
    }

    错误原因:&后必须接函数指示符

    纠正:第十行改为        scanf("%d",&p+i);

  • 相关阅读:
    【SICP练习】80 练习2.52
    【SICP练习】79 练习2.51
    【SICP练习】78 练习2.50
    【SICP练习】77 练习2.48-2.49
    【SICP练习】76 练习2.47
    【SICP练习】75 练习2.46
    【SICP练习】74 练习2.45
    【SICP练习】73 练习2.44
    【SICP练习】72 练习2.43
    【SICP练习】71 练习2.42
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10354205.html
Copyright © 2020-2023  润新知