比较简便的写法可以用 typedef定义源裂
比如
typedef int* Int_P
Int_P a,b
你函数没有问题,你的输入跟你的scanf语句春迟亏不对应扒神scanf("%d,%d,%d\n",&a,&b,&c)
=>3,5,8
或者将旦判scanf("%d,%d,%d\n",&a,&b,&c)=>scanf("%d%d%d\n",&a,&b,&c)
1、多重指针常用于多维数组或者多维字符串的 *** 作,有时也用于函数参数传递;2、指针是C语言的一个重要知识点,你可以简单理解为地址。多重指针需要通过多次寻址才能找到实际的值。这里一个示例:
# include<stdio.h>
int main()
{
unsigned int x=0x1234
unsigned int *p1=NULL
unsigned int **p2=NULL
unsigned int ***p3=NULL
p1=&x
p2=&p1
p3=&p2
printf("\nx=0X%X, &x=:0X%X",x,&x)
printf("\n *p1=0X%X, p1=:0X%X,吵旦咐 &p1=:0X%X",*p1,p1,&p1)
printf("\n **p2=0X%X, *p2=:0X%X, p2=:0X%X, &p2=0X%X",**p2,*p2,p2,&p2)
printf("\n***p3=0X%X, **p3=:0X%X, *p3=:0X%X, p3=:0X%X, &p3=:0X%X",***p3,**p3,*p3,p3,&p3)
return 0
}
显示结果:
x=0X1234, &x=:0X6C56C298
*p1=0X1234, p1=:0X6C56C298, &p1=:0X6C56C290
**p2=0X1234, *p2=:0X6C56C298, p2=:0X6C56C290, &p2=0X6C56C288
***p3=0X1234, **p3=:0X6C56C298, *p3=:0X6C56C290, p3=:0X6C56C288, &p3=:0X6C56C280
所有类型变量都可以通过&获得该变量在内存中的地址,从以上示例看出
变量x在内存中的地址为:0X6C56C298
指针变量p1的地址为:0X6C56C290
指针变量p2的地址为:0X6C56C288
指针变量p3的地址为:0X6C56C280
以上变量按照定升纯义先后顺序在内存中从高地址到低地址连续存储迟清的,每个变量占据8个字节空间。
其中p3的值(也就是0X6C56C280这个地址的内存中存放的数据)为p2的地址。
p2的值(也就是0X6C56C288这个地址的内存中存放的数据)为p1的地址。
p1的值(也就是0X6C56C290这个地址的内存中存放的数据)为x的地址。
要取得最终的0x1234这个数据,几重指针前面就有几个*,比如***p3就表示0x1234这个具体的值。只要少一个*,那么获得的就是地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)