u盘安装纯净版win7:C语言高手请指教:"int **p"是什么意思啊

来源:百度文库 编辑:中科新闻网 时间:2024/05/02 17:55:10

int a;
int *p = &a;
int **pp = &p;

明白了吧?
p 是一个普通的指针,它指向普通变量
pp 是一个指向指针的指针。

int a;
int *p = &a;
int **p是一个二维指针,它指向一个指针。
而它指向的那个指针是指向一个整型变量的。

如果我们设:
int a; //a是一个整型变量,则:
int *q; //它要指向这个整型变量a,则:
q=&a; //你所问的int **p是指向指针q的,则:
p=&q;

明白了吗???

int *p=&a;即声明一个整型指针变量p,并给指针变量p赋初值为变量a的地址。即p中存放的是变量a的地址。

如果,*p=&a;这样话,是把变量a 的地址存到指针变量p所指向的内存单元中.
例如:
main()
{
int *p,**k,a,s,t;
a=5;
p=&a;/*指针变量p存放变量a的地址*/
s=*p;
k=&p;/*指针量变量k存放指针变量p的地址,指针变量k是指向指针的指针*/
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}
改为下面的程序结果一样都是a=5,s=5,t=5

main()
{
int a,s,t, *p=&a,**k=&p;
a=5;
s=*p;
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}

这样看很容易:
(*p)在int ()中间,表示(*p)是函数,这个函数未定参数表,返回值是int型的;
再看(*p),p前有*,表示p为指针,这个指针指向的对象是前面那个函数。

p的使用举例:
int f()
{
...
}

int main()
{
int (*p)(); // 声明p变量
...
p = f; // p指向f函数
(*p)(); // 调用f函数
p(); // 简写形式,和上面的等价

指向指针的指针,其实简单点的看吧,也不过是一个指针,但为了区别指针的类型,象指向字符的指针,我们要用char *p,指向整型的指针我们要用int *p,同样指向指针的指针我们就要用**p,只是要记住他指向的地址也是指针,所以要操作什么,就要看你自己来决定,别想得太复杂,不过是一个指针罢了。

指向指针的指针变量