1.
#include<stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int p=(int)(&a+1);//(int*)表示强制转化为整形指针
/ (&a+1)将一维数组看成二维数组,即p指向二维数组第1行第0列,未赋值,即为0/**
printf("%d,%d",§,(p-1));
}
输出为0和5;
2.
#include<stdio.h>
int main(void)
{
int a[4]={1,2,3,4};
int p1=(int)(&a+1);
int p2=(int)(a+1);
printf("%d,%d",*p1,*p2);
输出0和2
}
3.
#include<stdio.h>
int main(void)
{
int a[3][2]={{0,1},{2,3},{4,5}};
int *p=a[0];
//p指向二维数组第0行第0列
printf("%d",p[0);
}
输出0
4.
#include<stdio.h>
int main(void)
{
char *a[]={“work”,“at”,“alibaba”};
char **p=a;
// 二级指针指向一级指针a,一级指针a的首地址指向work
p++;
printf("%s",*p);
}
输出at