c - 无法理解指针语句

标签 c pointers puts

我在做一道ctf题,有一行我看不懂。

int  (*fp)(char *)=(int(*)(char *))&puts, i;

谁能解释一下这是什么意思?

最佳答案

fp 是一个指针

(*fp)

一个函数

(*fp)(

接受 1 个 char 类型的参数

(*fp)(char)

并返回一个int

类型的值
int (*fp)(char)

经过大部分冗余转换后,指针用 puts 的地址初始化。

int  (*fp)(char *)=(int(*)(char *))&puts
int  (*fp)(char *)=(int(*)(char *))puts // & redundant
int  (*fp)(const char *)=puts

对象 i 未初始化。它的类型为 int

int  (*fp)(char *)=(int(*)(char *))&puts, i;

关于c - 无法理解指针语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476055/

相关文章:

debugging - Tcl 程序,其行为根据 "puts"语句而变化

c - 如何使用 C 中的 print 进行这样的输出

c++ - 执行顺序

c - 使用 read() 和指向缓冲区的指针从字符设备读取

c - 如何使用指针确定 C 中数组的大小?

c - 如何测试指针是否在数组内?

C 将 float 转换为整数

c - 这个通用函数有什么作用?

c - 如何找到本地/临时端口号?

c - 从用户获取输入字符串后,输出包含一些其他字符