Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C-传递指向带有void* variable参数的函数的指针

C-传递指向带有void* variable参数的函数的指针
EN

Stack Overflow用户
提问于 2012-12-25 13:33:46
回答 3查看 135关注 0票数 1

我想传递一个指向变量的指针。有时它是一个整数,有时可能是一个字符。在下面的示例中,我将指针p传递给CreateObject,但当我尝试检索该指针所指向的变量的值时,我得到了一个尴尬的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int i =0;
int *p = malloc(sizeof(int));
*p = i;

ObjectP object = CreateObject(p);

假设我想将它转换回一个int类型并显示它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CreateObject(void *key)
{
   printf("%d\n", (int)key);
}

我得到: 160637064而不是0。我得到的是什么而不是我之前分配的整数,我如何检索它而不是当前值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-25 13:35:32

这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(int) key

并不是取消引用指针来访问它所指向的数据,而是将指针值(地址)本身重新解释为整数。

您需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf("%d\n", *(int *) key);
票数 6
EN

Stack Overflow用户

发布于 2012-12-25 13:35:54

您正在对指向整数的指针进行类型转换。这意味着您只需获取地址。毕竟,指针只是一个地址。

您可能希望取消引用指针,而不是强制转换它。*(int*)key会这么做的。

票数 3
EN

Stack Overflow用户

发布于 2012-12-25 13:36:24

您正在打印指针,例如。地址,而不是它所指向的值。

使用此命令打印值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CreateObject(void *key)
{
   printf("%d\n", *(int*)key);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14031081

复制
相关文章
用指向函数的指针作函数参数
/**有2个整数a,b,有用户输入1,2,或3,如输入1, 程序就给出a和b中大者,输入2,就给出a和b中小者, 输入3,就给出a和b的和**/ #include <stdio.h> #include <stdlib.h> int main() { int f(int x,int y,int (*p)(int ,int )); int max(int x,int y); int min(int x,int y); int sum(int x,int y); int
谙忆
2021/01/19
6150
c-函数指针做参数的冒泡排序
冒泡排序算法相比大家都很熟悉了,但是这样的写法不知道大家试过没有,利用函数指针作为参数实现。
kdyonly
2023/03/03
3710
指向函数的指针
程序中定义函数后,对程序进行编译时,编译系统为函数分配一段存储空间存储二进制代码,这段内存空间的起始地址(也称入口地址)称为函数的指针。
pigeon
2022/04/11
8090
指向函数的指针
指向函数的指针
Author: bakari   Date: 2012.8.8 做好总结我觉得是把知识学扎实必不可少的实践环节。这个知识点是当初自己在学习这一块做的一些笔记,现在在知识提升的情况下将它重新整理一下以作巩固之用。 我们知道一段代码在内存中是由地址的,一个函数在编译时会被分配给一个入口地址,这个地址就是该函数中第一条指令的地址,这就是函数的指针。当调用一个函数时出了通过函数名来调用之外,还可以通过指向该函数的指针变量来调用。切记,和一切指针变量一样,一个指向函数的指针其初值也不能为空。因为它在使用之前必须被赋予
Linux云计算网络
2018/01/10
1.3K0
指向函数的指针
使用指向函数的指针
/**输入2个整数,然后让用户选择1或2,选1时调用max函数,输出2者中的大数, 选2时调用min函数,输出2者中的小数**/ #include <stdio.h> #include <stdlib.h> int main() { int max(int x,int y); int min(int x,int y); int (*p)(int ,int ); int n,a,b; scanf("%d%d",&a,&b); scanf("%d",&n);
谙忆
2021/01/19
8080
7.4 指向函数的指针
①定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数
小林C语言
2019/08/09
8500
golang函数参数中接口指针的传递
最近写代码的时候遇到了一个问题:有一个功能需要使用一个接口,有多个结构体实现了这个接口(经典OO场景)。这些方法中,有一些方法可以修改结构体中的指定属性,并且有一个对应的方法来返回这个属性。
千灵域
2022/06/17
2.3K0
8.5 指向函数的指针
1、如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配了一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。
小林C语言
2019/07/12
9370
C++指向函数的指针
函数指针是指向函数而非指向对象的指针。与其他类型的指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。(类似C#中的代理)
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.5K0
C语言中的函数指针(*(void(*)())0)();
我刚开始学习C语言的时候是写简单的数学运算在黑框框里面跑,然后用C语言写51单片机的代码,再到后来玩stm32,学应用层编程,学内核编程等,框架结构逐渐变的复杂,也越来越觉得对C语言的理解还不够到位。真是越往下学,越觉得水深啊!个人总结一下C语言中有关函数的知识,如有问题请留言指明*v*
HeaiKun
2020/07/06
1.8K0
c语言之指向函数的指针
一个函数在编译时被分配给一个入口地址。这个函数的入口地址就被称为函数指针。 #include<stdio.h> #include<iostream> int max(int, int); int main() { int (*p)(int,int); int a, b, c; p = max; printf("请输入a,b的值,以空格隔开:\n"); scanf_s("%d %d", &a, &b); c = (*p)(a, b); printf("a
西西嘛呦
2020/08/26
1.2K0
void及void指针含义的深刻解析
void指针使用规范 ①void指针能够指向随意类型的数据,亦就可以用随意数据类型的指针对void指针赋值。比如: int * pint; void *pvoid; pvoid = pint; /* 只是不能 pint= pvoid; */ 假设要将pvoid赋给其它类型指针,则须要强制类型转换如:pint= (int *)pvoid;
全栈程序员站长
2022/07/13
1.5K0
你必须知道的指针基础-7.void指针与函数指针
  void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。
Edison Zhou
2018/08/20
9580
你必须知道的指针基础-7.void指针与函数指针
C语言 | 指向指针的指针
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
小林C语言
2021/03/10
3K0
指针数组与指向指针的指针
指针数组与指向指针的指针 http://wlkc.gdqy.edu.cn/jpkc/portal/blob?key=173314 指针数组和数组指针的区别 http://allew.blog.163.
阳光岛主
2019/02/19
1.8K0
python开发_函数的参数传递
在这个用例中,我们要讨论的是关于函数的传参问题 我所使用的python版本为3.3.2
Hongten
2018/09/13
1.1K0
C语言 | 指向指针的指针排序
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
小林C语言
2021/03/10
1.7K0
Golang函数参数的值传递和引用传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数
仙人技术
2021/08/31
2.5K0
Golang函数参数的值传递和引用传递
c语言之指向指针的指针
定义:int **p; 实例: #include<stdio.h> #include<iostream> int main() { char* str[] = { "hello","hi","nihao" }; char** p; for (int i = 0; i < 3; i++) { //指针指向数组中的第几个指针 p = str + i; //想要获得指针指向的值,通过*来解引用 printf("%s\n", *p
西西嘛呦
2020/08/26
1.5K0
点击加载更多

相似问题

将指向成员函数的指针作为void*函数的参数传递

23

C-将指向函数指针的指针传递给函数

31

指向void函数的指针

128

带有指向void指针的指针的qsort

12

C-使用指向指针的指针具有函数中的参数

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文