指针数组

#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\n",*arr[i]);

  }

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

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

  printf("指针元素个数:%d\n",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\n",arr);

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

 

//a是数组首地址

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

  printf("%p\n",a);

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

 

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

  {

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

  } */

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

  //printf("%d\n",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;

 

 

}

posted @ 2020-08-24 12:04  wh19991213  阅读(64)  评论(0编辑  收藏  举报