例如,我有:
char* a = (char*) malloc(sizeof(char));
char* b = (char*) malloc(sizeof(char*));
如何从地址a
开始将b
的地址输入内存?
答案 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分配空间,因为它们只是指向堆上的相同地址。但是,您必须小心谨慎,free
和a
只指b
一次空间!
答案 3 :(得分:1)
让我先说一下,因为b
实际上指的是char*
,所以你应该以这种方式声明并初始化它:
char** b = (char**) malloc(sizeof(char*));
使用char**
代替char*
。但是如果您已经知道这一点,并且仍然希望b
出于某种原因拥有char*
类型,那么您只需写下:
*((char**) b) = a;
将b
视为char**
,因此您可以在其中存储char*
。