堆存储指针笔记
方法一: 用unsigned存, void传, 比较通用。
void main()
{
unsigned int a1= 100;
unsigned int *ipt1= &a1;
unsigned int * pt= (unsigned int *)calloc(sizeof(unsigned int), 100); //1. unsigned int 堆只能存 unsigned int 数
pt[0]= (unsigned int)ipt1; // *2. 强制把unsigned int 指针存储
void_param(pt);
}
void void_param(void *pt)
{
unsigned int *pt1= (unsigned int)pt; //3. void 传入, 首先转换为对应的类型
unsigned int *pt2;
memcpy(&pt2, &pt1[0], sizeof(unsigned int)); //*4. 取出指针, 要通过memcpy
printf("%d", *pt2);
}
方法二: char××直接指定就可以了。
char **arrpt= (char **)calloc(sizeof(char *), 100); //1. char **
char a1, a2;
a1= '1';
a2= '2';
arrpt[0]= &a1; //2. 存储
arrpt[1]= &a2;
printf("%p\r\n", pt[0]); //3. 读取
printf("%p\r\n", pt[1]);
如果有其他方法, 将指针存入取出, 欢迎评论指点.
浙公网安备 33010602011771号