今天,我们一起来分析C语言,双重指针。
1.双重指针含义
双重指针,就是指针指向的地址A(假设是80H地址),里面存放一个变量sp,而该变量sp是一个指针变量。
2.程序范例
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,b,c,d;
uchar *sa,**ss,**sp,*sb="edu118";
uchar niu[10]={3,8,1,13,29,4,5};
main()
{
sa=niu;//H1
ss=&sa;//H2
a=**ss;//H3
b=*(*ss+3);//H4
sp=&sb;//H5
c=**sp;//H6
d=*(*sp+2);//H7
printf("%d\t,%d\t",a,b);
printf("%c\t,%c\t",c,d);
}
程序说明:
H1、sa=niu;将数组首地址送给指针sa,即指针sa指向数组niu的首地址。
H2、ss=&sa;指针sa所在的地址送给双指针ss,即指针ss指向指针sa所在的地址。
H3、a=**ss;将指针ss指向地址里面的数sa,作为指针,将sa指针指向地址里面的数取出。
H4、b=*(*ss+3);相当于b=niu[3];
H5、sp=&sb;指针sb所在的地址送给双指针sp,即指针sp指向指针sb所在的地址。
H6、c=**sp; 将指针sp指向地址里面的数sb,作为指针,将sb指针指向地址里面的数取出。
H7、d=*(*sp+2);相当于d=*(sb+2);。
程序运行结果案例:
|