好!
不把你们弄明白,我今儿就不吃饭。
一个*表示另一个指针,再加一个*符表示另一个指针。
也就是两个**的指针指向一个*的指针。(请确定你已经了解。)
**p它是指向*p的。(了解!)
*p是指向&i的。(明白!)
为了更好区分,两个**的指针用B来代替,一个*的指针用A来代替。
*B++;//B原是指向A的地址,++了后就指向A所指向的地址&i.(B->A->&i).
那么再*B也就是取i的值,也就是49了。
=×&D o I p R e E n C g T l X&×=
#include <iostream>
using namespace std;
void f(int ** p)
{
cout<<"*p = "<<(long)*p<<endl;
cout <<"p=" <<(long)p<<endl;
*p++;
cout <<"p=" <<(long)p<<endl;
cout<<"*p = "<<(long)*p<<endl;//?里?什??出的是?49,而上面?出的是地址??
}
int main()
{
int i =49;
double j = 50;
int * ip = &i;
cout<<"ip = "<<(long)ip<<endl;
f(&ip);
return 0;
}
那问一下,这个为啥没打出来49呢?
#include <iostream>
using namespace std;
void f(int ** p)
{
cout<<"*p = "<<(long)*p<<endl;
cout <<"p=" <<(long)p<<endl;
*p++;
cout <<"p=" <<(long)p<<endl;
cout<<"*p = "<<(long)*p<<endl;//?里?什??出的是?49,而上面?出的是地址??
}
int main()
{
int i =49;
//楼上的姐姐这里可是多了一句呖,double j = 50;
//已经不是原来的那个程序了。
double j = 50;
int * ip = &i;
cout<<"ip = "<<(long)ip<<endl;
f(&ip);
return 0;
}