• 指针


    1、
    对于一维数组来说:(p是指针,a是数组名)
    *(p--)相当于a[i--] 先对p进行*运算,再使p自减
    *(--p)相当于a[--i] 先使p自减,在进行*运算
    ++与--同理。

    2、
    通过指针引用多维数组中:
     
    定义 int a[3][4];
    此时,a代表首行(即第0行)的首地址。
    a+1代表第一行的首地址。
    C语言中规定了数组名代表数组首元素的地址,因此a[0]代表一维数组a[0]的第0列元素的地址,即&a[0][0],
    a[1]值是&a[1][0].
     
    (二维数组中)
    表示形式                                                  含义
    a                                          二维数组名,指向一维数组a[0],即0行首地址
    a[0],*(a+0),*a                             0行0列元素地址
    a+1,&a[1]                                  1行首地址
    a[1],*(a+1)                                1行0列元素a[1][0]的地址
    a[1]+2,*(a+1)+2,&a[1][2]                   1行2列元素a[1][2]的地址
    *(a[1]+2),*(*(a+1)+2),a[1][2]         1行2列元素a[1][2]的值
     

    3、
    关于 int (*p)[m];形式:
        这时候的p不是指向整型变量,而是指向一个包含m个元素的一维数组。这时,如果p先指向a[0](即p=&a[0]),  则p+1  不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位。
     
    例子:int (*p)[4];
    表示*p有4个元素,每个元素为整型。就是p所指向的对象是有4个整型元素的数组,即p是指向一维数组的指针。此时p只能指向一个包含4个元素的一维数组,p的值就是一维数组的起始地址。p不能指向一维数组中的某一元素。
    此例中,p+n是a[n]的起始地址,*(p+n)+i是a[n][i]的地址,*(*(p+n)+i)是a[n][i]的值。
    代码:
    一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。
    #include<stdio.h>
    void main()
    {
     void average(float *p,int n);
     void search(float (*p)[4],int n);
     float score[3][4]={ {65,67,70,60}, {80,87,90,81}, {90,99,100,98} };
     
     average(*score,12);  (注意:此行可以以另外形式:average(score,12); )
     search(score,2);
    }

    void average(float *p,int n)
    {
     float *p_end;
     float sum=0,aver;
     p_end=p+n-1;
     for(;p<=p_end;p++)
      sum=sum+(*p);
     aver=sum/n;
     printf("average=%5.2f ",aver);
    }

    void search(float (*p)[4],int n)
    {
     int i;
     printf("The score of No.%d are: ",n);
     for(i=0;i<4;i++)
      printf("% 5.2f",*(*(p+n)+i));
     printf(" ");
    }
    注意函数  search(float (*p)[4],int n) 中的粗体部分





  • 相关阅读:
    redis 学习笔记
    导数据方法
    数据库常用操作
    zepto.js
    shopnc
    vue.js
    laravel
    mysql进阶学习
    Python基础------生成器表达式形式、面向过程编程、内置函数部分
    Python基础----生成器、三元表达式、列表生成式、生成器表达式
  • 原文地址:https://www.cnblogs.com/vitah/p/4605511.html
Copyright © 2020-2023  润新知