指向指针的指针

如果一个指针指向的是另外一个指针,那么我们就称它为二级指针,或者指向指针的指针。同理可以理解多级指针,如三级指针就是指向二级指针的指针。

关系如下:

int a=100;

int *p1=&a;

Int **p2=&p1;

此时p2就是一个二级指针,它指向指针p1,在这里我们如果要取出整型变量a对应得空间中存放的数据(以printf输出为例)有以下几种方式:

printf(“%d”,a);

printf(“%d”,*p1);

printf(“%d”,**p2);

可以这样理解它们的关系:

p1=&a;

p2=&p1;

a=*p1;    (1)

p1=*p2;    (2)

(1)p1(2)代换,易知a=**p2

下边以一个完整的程序来示例多级指针的使用。

 

++++++++++指向指针的指针使用简单示例++++++++++

#include<stdio.h>
void main()
{
int m=100;
//用它本身输出
printf("%d\n",m);
 
//用一级指针输出
int *p1=&m;
printf("%d\n",*p1);
 
//用二级指针输出
int **p2=&p1;
printf("%d\n",**p2);
 
//用三级指针输出
int ***p3=&p2;
printf("%d\n",***p3);
}

++++++++++二级指针的简单使用++++++++++

#include<stdio.h>
void main()
{
char *mn[3]={"Hello C!","Hello word!","hello xust!"};
for(int i=0;i<3;i++)
printf("%s\n",*(mn+i));
}


++++++++++利用二级指针统计奇偶数++++++

#include<stdio.h>
void main()
{
int a[10],*p1=a2,**p2=&p1,i,n=0,m=0;
printf("请输入一串数字\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);  /* 这里的&a[i]也可以换为*p2 */
 
printf("输入数字中偶数有:");
for(i=0;i<10;i++)
{
if(*(*p2+i)%2==0)
{
printf("%4d",*(*p2+i));
n++;
}
}
printf("  共计%d个\n",n);
printf("输入数字中奇数有:");
for(i=0;i<10;i++)
{
if(*(*p2+i)%2!=0)
{
printf("%4d",*(*p2+i));
m++;
}
}
printf("  共计%d个\n",m);
}



全部评论

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务