堆存储指针笔记

 

 

方法一: 用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]);

 

 

如果有其他方法, 将指针存入取出, 欢迎评论指点.

posted on 2010-12-16 17:32  oleeceo  阅读(216)  评论(0)    收藏  举报

导航