c - 基本指针用法

标签 c memory pointers casting

我正在尝试编写一个函数,它接受一个指向 int 的 void 指针,然后将 int 加倍,然后将其放回内存位置:

void doubleNumber(void *number){
    number = &((*((int*)(number))) * 2);

} 

因此,首先我将它从 void * 转换为 int *,然后我引用 int * 以获取值,然后我乘以 2,然后我获取它的地址以将其放回指针中。

谁能告诉我为什么我的逻辑不起作用?

谢谢

最佳答案

我会这样写:

void doubleNumber(void *number){
    *(int*)number *= 2;
}

首先将number 转换为int* 类型。然后取消引用指针。然后加倍。

您的代码的问题在于您分配的是指针而不是指针对象。

关于c - 基本指针用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799996/

相关文章:

c - 为什么我的函数会产生冲突类型错误?

java - 为什么数组支持的 Java 集合对其容量施加任意限制?

c - 请解释一下这个比较字符串的方法

C指针和数组问题

c - 将结构数组传递给函数

C 在数组初始化器中初始化指向数组的指针

c - 在同一管道上多次写入和读取?

c - 为什么在尝试打印数组时出现段错误?

关于指针+非指针的c++内存问题

c - 函数指针 : why is (*fptr)(6, 7) 与 (fptr)(6,7) 相同,如果函数是 add(int , int )