我有两个指针。 A char
带有字符串“测试”的指针和void
指针。 我试图让pointer
指向string
的地址。 这里是我的代码:指向字符指针的void-pointer指针
#include <stdio.h>
int main(){
void *pointer = NULL;
char *string = "test";
*(char*)pointer = &string;
printf("The string address: %p\n", string);
printf("The string: %s\n", string);
printf("The pointer address: %p\n", pointer);
printf("The pointer points to: %p", *(char*)pointer);
return 0;
}
当我设置pointer
等于的string
第6行,我得到makes integer from pointer without a cast
地址。我怎样才能做到这一点?
编辑: 我正在打印错误的地址。我的意思是为printf的线条看上去像这样:
#include <stdio.h>
int main(){
void *pointer = NULL;
char *string = "test";
pointer = &string;
printf("The string address: %p\n", &string);
printf("The string: %s\n", string);
printf("The pointer address: %p\n", &pointer);
printf("The pointer points to: %p", pointer);
return 0;
}
现在正确地打印出这一点:
,将字符串地址:0028FF18
字符串:测试
指针地址: 0028FF1C
指针指向:0028FF18
所以string
和pointer
是分开的指针a nd pointer
指向string
。
'string'的地址不是一个对象,因此无法解决。 – Deduplicator
一个简单而优雅,'pointer = string'会做。 –
'pointer = string'虽然改变了指针的位置。我希望'指针'位于同一个内存位置,但指向(包含)'string'的地址。 – tem887