将指针的地址存储到内存中

时间:2011-12-16 22:58:38

标签: c pointers

例如,我有:

char* a = (char*) malloc(sizeof(char));
char* b = (char*) malloc(sizeof(char*));

如何从地址a开始将b的地址输入内存?

4 个答案:

答案 0 :(得分:1)

你不能只做*b = a吗?或者我误解了这个问题?

答案 1 :(得分:1)

取决于您需要的内容(目前尚不完全清楚),您可以b = a*b = &a(按照您的要求,将a的地址放入内存,从地址{{开始1}}),或b

答案 2 :(得分:1)

如果你希望b指向一个指向char 的指针(可以通过查看你的malloc语句来推断,你可以为一个指针指向char < / em>),然后b实际上应该是指向char 的指针的类型,如下所示:

char*  a = (char*) malloc(sizeof(char));
char** b = (char**)malloc(sizeof(char*));

据我所知,你想要实现的是指定地址a指向b指向的地方?那将是这样的:

*b = a;

如果您只是希望b成为指向char 的指针(正如您实际声明b),并希望它指向相同的地址如a ,请执行以下操作:

char* a = (char*)malloc(sizeof(char));
char* b = a;

这使b指向与a相同的位置;但是你也不需要为b分配空间,因为它们只是指向堆上的相同地址。但是,您必须小心谨慎,freea只指b一次空间!

我还建议阅读指针的想法(例如herehere)。

答案 3 :(得分:1)

让我先说一下,因为b实际上指的是char*,所以你应该以这种方式声明并初始化它:

char** b = (char**) malloc(sizeof(char*));

使用char**代替char*。但是如果您已经知道这一点,并且仍然希望b出于某种原因拥有char*类型,那么您只需写下:

*((char**) b) = a;

b视为char**,因此您可以在其中存储char*