当我在 Vim 终端中使用 Shift + 4 ($) 命令时,光标会转到我所在行的倒数第二个字符,而不是最后一个。有谁知道我该如何解决这个问题?谢谢!
该图显示了我在第 5 行使用 $ 命令时光标的位置。
我正在尝试创建一个函数指针数组,以便我可以使用指针打印函数的输出。(来自《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。
有谁知道这个问题的解决方案?谢谢你!
我开始阅读The C Programming Language,我注意到变量的声明和它们的分配在不同的行上。例如,从第 16 页开始:
int c;
c = getchar();
Run Code Online (Sandbox Code Playgroud)
有int c = getchar();没有不写的原因(一般来说,为什么赋值和声明不在同一行)?当我运行它而不是前者时,它似乎工作正常。