[lenguaje C] puntero y matriz

formación

  • pasar matriz a función
      double getAverage(int arr[], int size)
      {
          int    i;
          double avg;
          double sum=0;
          for (i = 0; i < size; ++i){
              sum += arr[i];
          }
          avg = sum / size;
          return avg;
      }
      int main ()
      {
          int balance[5] = {1000, 2, 3, 17, 50};
          double avg;
          avg = getAverage( balance, 5 ) ;
          printf( "平均值是: %f ", avg );
          return 0;
      }
    
  • La función devuelve una matriz: devuelve un puntero a una matriz
    int * getRandom()
    {
        static int r[10];
        int i;
        srand((unsigned)time(NULL));
        for(i=0;i<10;++i){
            r[i] = rand();
        }
        return r;
    }
    int main()
    {
        int *p;
        int i;
        p=getRandom();
        for(i=0;i<10;i++){
            printf("*(p+%d):%d\n",i,*(p+i));
        }
        return 0;
    }
    
  • pasar el puntero a la función
    void getSeconds(undigned long *par)
    {
        *par = time(NULL);
        return;
    }
    getSeconds(&sec);
    
  • función devuelve puntero
    int * getRandom()
    {
      srand((unsigned)time(NULL));
      r[3] = rand();
      return r;
    }
    p = getRandom();
    printf("%d",*p);
    

puntero

operador

  • &: dirección de la variable de retorno
  • *: apunta a una precedencia variable
  • NULL: si no hay una dirección exacta al declarar una variable, se puede asignar un valor NULL
    int *ptr = NULL;
    
    • Dirección 0x0, la mayoría de los sistemas no permiten el acceso a la memoria en la dirección 0, lo que indica que no apunta a una ubicación de memoria accesible.

operación

  • incrementar o disminuir
    • Incremento ptr++: apunta a la ubicación de memoria del siguiente elemento
    • decremento ptr--: apunta a la unidad de almacenamiento del elemento anterior
    • El número de bytes saltados depende de la longitud del tipo de datos de la variable a la que apunta el puntero (int4 bytes)
  • Comparar
    • ==, <, >
    • ptr <= &var[MAX-1]

matriz de punteros

int *ptr[MAX];
ptr[i]=&var;
x=*ptr[i];

const char *names[]={   //  指向字符的指针数组来存储一个字符串列表
    "KCZX",
    "XHYZ",
    "TJDX",
    "GKGZ",
};

puntero puntero

int **ptr2;

ptr1 = &V;
ptr2 = &ptr1;

printf("%d",V);
printf("%d",*ptr1);
printf("%d",**ptr2);

Supongo que te gusta

Origin blog.csdn.net/weixin_46143152/article/details/126671580
Recomendado
Clasificación