形参是void指针,实参是char数组怎么打印数组内容
时间: 2024-09-25 18:16:52 浏览: 15
当你有一个形参为`void*`的函数,并且你想传入一个`char`类型的数组作为实参,通常需要通过特定的方式来间接访问数组的内容。因为`void*`可以指向任意类型的数据,你需要先将`char`数组转换为`void*`指针,然后通过某种手段(如`memcpy`或解引用操作)获取数组的实际地址。
下面是一个简单的例子,假设有一个名为`printCharArray(void* ptr, size_t length)`的函数:
```c
#include <stdio.h>
#include <string.h>
// 假设我们知道数组的大小
void printCharArray(void* ptr, size_t length) {
char* charArray = static_cast<char*>(ptr); // 将void*转换为char*
for (size_t i = 0; i < length; ++i) {
printf("%c", charArray[i]); // 打印每个字符
}
printf("\n");
}
int main() {
char myArray[] = {'H', 'e', 'l', 'l', 'o'};
size_t arraySize = sizeof(myArray) / sizeof(char);
printCharArray(&myArray[0], arraySize); // 实参为字符数组的首元素地址
return 0;
}
```
在这个例子中,我们首先通过`static_cast`将`void*`转换为`char*`,然后遍历数组并打印其内容。注意,由于`&myArray[0]`已经是`void*`类型,所以可以直接传递给函数。