小编laf*_*ffy的帖子

Vim 中的 $ 命令仅转到一行的倒数第二个字符

当我在 Vim 终端中使用 Shift + 4 ($) 命令时,光标会转到我所在行的倒数第二个字符,而不是最后一个。有谁知道我该如何解决这个问题?谢谢!

$ 命令后的光标图像。

该图显示了我在第 5 行使用 $ 命令时光标的位置。

vim command macvim

4
推荐指数
1
解决办法
706
查看次数

打印函数指针时出现不兼容的指针类型警告

我正在尝试创建一个函数指针数组,以便我可以使用指针打印函数的输出。(来自《Effective C》一书的练习。)

#include <stdio.h>
#include <stdlib.h>

int a(void) { return 1; }
int b(void) { return 2; }
int c(void) { return 3; }

int main(void)
{

    int(*func_arr)[3] = {&a, &b, &c};
    printf("%d\n", (*func_arr)[0]);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我编译它时,我收到警告

starting.c:10:26: warning: incompatible pointer types initializing 'int (*)[3]' with an expression of type
      'int (*)(void)' [-Wincompatible-pointer-types]
    int(*func_arr)[3] = {&a, &b, &c};
                         ^~
starting.c:10:30: warning: excess elements in scalar initializer
    int(*func_arr)[3] = {&a, &b, &c};
                             ^~
Run Code Online (Sandbox Code Playgroud)

而且,当我运行该程序时,我得到的输出为 -443987883,而它应该只是 1。

有谁知道这个问题的解决方案?谢谢你!

c arrays function-pointers declaration function-call

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

变量的声明和赋值在 K&amp;R 中的不同行是否有原因?

我开始阅读The C Programming Language,我注意到变量的声明和它们的分配在不同的行上。例如,从第 16 页开始:

int c;
c = getchar();
Run Code Online (Sandbox Code Playgroud)

int c = getchar();没有不写的原因(一般来说,为什么赋值和声明不在同一行)?当我运行它而不是前者时,它似乎工作正常。

c variable-declaration

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