小编Sim*_*le 的帖子

类型化一个函数指针

我知道这是重复的.我已经搜索过,但没有人解决我遇到的问题. 注意,为了解决我的困惑,我试图简化原始的类型转换.希望它不是未定义的行为

声明指向函数的指针

Int (*funcPtr)(void*,void*);
Run Code Online (Sandbox Code Playgroud)

Strcmp声明

int strcmp (char *, char *);
Run Code Online (Sandbox Code Playgroud)

类型化一个函数指针

FuncPtr = (int (*)(void*, void*))strcmp
Run Code Online (Sandbox Code Playgroud)

这是我感到困惑的地方.我理解Typecasting我们创建的函数指针.因此,类型转换FuncPtr例如只是更改funcPtr可以指向的函数类型.我还读过一个函数的名称是一个函数指针,所以Typecasting strcmp并使用我从上面的理解,

int (*)(void*, void*))strcmp 
Run Code Online (Sandbox Code Playgroud)

Strcmp现在可以指向一个函数,该函数接受两个void指针并返回一个明显错误的int,就像数组一样,我认为函数名不能是指向另一个函数的指针.

由于我上面的理解,我没有看到如何 使用以下类型转换将strcmp的地址分配给FuncPtr

FuncPtr = (int (*)(void*, void*))strcmp
Run Code Online (Sandbox Code Playgroud)

作为改变什么函数指针的strcmp点不会改变参数和返回类型的strcmp.

我真的很感激一些我很困惑的知识.

c function-pointers typecast-operator

3
推荐指数
1
解决办法
2117
查看次数

将数组表示法转换为指针表示法

int  array[5];
Run Code Online (Sandbox Code Playgroud)

表达如

 array[3] gets converted to *(array+3)
Run Code Online (Sandbox Code Playgroud)

或者在

void fun ( int *array[] );

*array[] gets converted to int **array 
Run Code Online (Sandbox Code Playgroud)

我想知道数组声明是什么

int array[5]; 
Run Code Online (Sandbox Code Playgroud)

转换成?是吗

int *(array+5)
Run Code Online (Sandbox Code Playgroud)

如果是的话,这甚至意味着什么?一个人如何解释和/或阅读它?

c arrays pointer-arithmetic

2
推荐指数
1
解决办法
785
查看次数

如何使用replace函数将mark标签连接到字符串中的单个单词?

<mark>如果在knownWords数组中找到,以下函数尝试将标签连接到字符串的元素。因此,执行代码后,输出应该是

Marked string: The <mark>quick</mark> <mark>brown</mark> fox jumped over the <mark>lazy</mark> dog. 
Run Code Online (Sandbox Code Playgroud)

但是,字符串在执行后保持不变。

Marked string: The <mark>quick</mark> <mark>brown</mark> fox jumped over the <mark>lazy</mark> dog. 
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
81
查看次数