关于TurboC中的“指针”

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:18:29
假设p是一个指向整型变量的指针变量,那么在p中存储的“地址”,除了是某个整型变量的地址外,是否也可以用来存储另一个指向整型变量的指针变量的地址(如**p这种情况)
定义了!!
p是一个指向整型变量的指针变量!!!!

如果我这样说:一个指针变量是否可以存储另一个指针变量的地址,用式子表达一下!!

整型数和地址一样都是4占个字节,因此,整型数和地址是可以相互转换的,你可以把一个整数当作一个地址,也可以把地址当作一个整数,这也正是C语言的灵活之处,但使用时一定要小心,避免出现严重内存问题。

例如:
int a;
int* p1;
int** p2;

可以这样用:
p1 = &a; //p1指向a的地址

也可以这样用:
p1 = (int*)p2;
那么,访问**p2时,可以这样:
int* p3 = (int*)(*p1);//即把*p1当作一个地址来用,而非是一个普通的整数
*p3就是**p2中的数值了;

以上只是从概念上说的,具体应用时就看你的应用场合了。

补充:============================================
就如前面提到的,如:
int* p1;
int* p2;
p1 = (int*)&p2; //p1指向p2的地址
要访问*p2时,可以:
int* p3 = (int*)(*p1); //由于*p1是整型数,因此要把整数强制转换成整型指针,即*p1中保存的是p2所指向的地址
*p3的值就是*p2的值了。

这要看您为P定义的类型。

可以试试:
p=*a;
p2=*p;

指针是语言中一个变态的东西

现在主流语言中

C# JAVA都没有这种变态的东西

楼主不懂的话,完全可以放弃

不可以
如果你真的想用,而且确定自己不会滥用
void*可以成为你的选择