p=b;
这是把b的内容赋值给p
*p是个指针,*b是个指针
p和b都是存放地址的变量,就是变量而已,他们的值是地址。
p=b的意思是 让p这个地址里的内容变成b这个地址里的内容:
例如:
int i=2;
int *b,*p;
b=&i; //b这个变量的值是&i(是个地址)
p=b; //经过这个操作那么p这个变量的值就是&i;
*b的值就是i, 是指向&i这个地址的内容,2;
为什么不定义为**p;
根据相同类型之间才能相互赋值:
先看类型,*p,和*b的类型都是int,而p和b的类型都是int *,所以它们能相互赋值。
如果定义为**P,那么p的类型就是int **,而与b的类型不同。
要用到强制转换:p=(int **)b;才可以,编译程序会报警。
**p指向指针的指针,的意思是指向地址的地址,也就是p存放的是地址的地址,
而上面不需要这么曲折的指向,只是让b的内容备份一个给p(通俗之说)。
p=b;可以理解为 让*p也指向,*b所指向的内存地址。
[
本帖最后由 do8do8do8 于 2010-7-27 09:22 编辑 ]