以下是一个包含代码示例的解决方法:
#include
void printValue(void* ptr) {
int* intPtr = (int*)ptr;
printf("Value: %d\n", *intPtr);
}
void printAddress(void* ptr) {
char* charPtr = (char*)ptr;
printf("Address: %p\n", charPtr);
}
int main() {
int num = 10;
char* charPtr = (char*)#
printf("Using void* to reference int:\n");
printValue(charPtr);
printf("Using char* to reference int:\n");
printValue((int*)charPtr);
printf("Using void* to reference int pointer arithmetic:\n");
printAddress(charPtr + sizeof(int));
printf("Using char* to reference int pointer arithmetic:\n");
printAddress((char*)charPtr + sizeof(int));
return 0;
}
输出如下:
Using void* to reference int:
Value: 10
Using char* to reference int:
Value: 10
Using void* to reference int pointer arithmetic:
Address: 0x7ffeea1df9cc
Using char* to reference int pointer arithmetic:
Address: 0x7ffeea1df9cc
这个程序展示了使用void*
和char*
引用int
及指针算术的用法。printValue
函数使用void*
和char*
引用int
,可以正确打印出int
的值。printAddress
函数使用void*
和char*
引用int
指针算术,可以正确打印出指针的地址。注意在引用时的类型转换,以及在指针算术时使用sizeof(int)
来确保偏移正确。