关于TurboC中的“指针”
来源:百度知道 编辑:UC知道 时间:2024/09/28 09:18:29
假设p是一个指向整型变量的指针变量,那么在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*可以成为你的选择