指针数组

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

int main01()

{

  int a=10;

  int b=20;

  int c=30;

  int*arr[3]={&a,&b,&c};

  for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)

  {

    printf("%d ",*arr[i]);

  }

  printf("指针数组大小:%d ",sizeof(arr));//12

  printf("指针元素大小:%d ",sizeof(arr[0]));//4

  printf("指针元素个数:%d ",sizeof(arr)/sizeof(arr[0]));//3

  

  return EXIT_SUCCESS;

}

int main02()

{

//指针数组里面元素存储的是指针,指针数组对应二级指针

  int a[]={1,2,3};

  int b[]={4,5,6};

  int c[]={7,8,9};

  int*arr[]={a,b,c};

//arr是指针数组的首地址

  printf("%p ",arr);

  printf("%p ",&arr[0]);

//a是数组首地址

  printf("%p ",arr[0]);

  printf("%p ",a);

  printf("%p ",&a[0]);

  /*for(int i=0;i<3;i++)

  {

    printf("%d ",*(arr[i]));//1,4,7

  } */

//指针数组是一个特殊的二维数组模型

  //printf("%d ",arr[0][1]);//2

  for(int j=0;j<3;j++)

  {

    for(int k=0;k<3;k++)

    {

      //二维数组

      printf("%d ",arr[j][k]);

      //指针偏移

      printf("%d ",*(arr[j]+k));

      printf("%p ",arr+j+k);

      printf("%d ",*(*(arr+j)+k));

    }

    puts("");

  }

  return 0;

}

原文地址:https://www.cnblogs.com/wanghong19991213/p/13553109.html