void* 强转int*取值取地址
时间: 2023-07-23 18:29:21 浏览: 58
这个问题其实是两个问题的组合。
第一个问题是:如何将 `void*` 强制转换为 `int*` 类型?
答案是:使用 C 语言中的强制类型转换符 `(int*)`。
例如,下面的代码将 `void*` 类型的指针 `p` 强制转换为 `int*` 类型的指针 `q`:
```c
void* p;
int* q = (int*)p;
```
第二个问题是:如何对 `int*` 类型的指针进行取值和取地址操作?
答案是:使用 C 语言中的解引用符 `*` 和取地址符 `&`。
例如,下面的代码将 `int*` 类型的指针 `q` 所指向的整数值取出并存储到变量 `x` 中:
```c
int* q;
int x = *q;
```
而下面的代码将变量 `x` 的地址存储到 `int*` 类型的指针变量 `r` 中:
```c
int x;
int* r = &x;
```
需要注意的是,对于一个无效的指针或者一个空指针进行解引用操作都会导致未定义行为。因此,在进行指针操作之前,应该确保指针指向的内存地址是有效的和已经初始化的。
相关问题
c++ 将void*转int
将 `void*` 转换为 `int` 可以使用类型强制转换,但是这种转换可能存在问题,因为 `void*` 类型是指向任意类型的指针,而 `int` 类型的大小和指针类型可能不同,导致精度丢失和数据截断。
以下是将 `void*` 转换为 `int` 的示例代码:
```c++
void* ptr = // 指向某个内存地址的 void 指针
int i = reinterpret_cast<int>(ptr);
```
需要注意的是,这种转换可能会导致一些未定义行为,因为 `void*` 类型的指针可能不是按照 `int` 类型的对齐方式进行内存分配的。因此,最好不要将 `void*` 指针转换为整数类型,而是尽量使用指针类型来进行内存地址的操作。
void * 转 int*
您好!以下是用中文回答您的问题:
这是一个交换两个整数变量值的函数,参数分别是两个整型指针。
函数代码如下:
void swap(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
函数使用指针作为参数,因为它需要修改变量的值。在函数内部,它将变量p1所指向的值存储在临时变量temp中,然后将p2所指向的值复制给p1所指向的值,最后将temp的值复制给p2所指向的值,从而完成了两个变量值的交换。
希望这能够帮到您!