#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;
}