曾经以为,C语言对我来说已经深入骨髓,所有语法细节早已烂熟于胸,直到我遇到了一道笔试题,一道丧心病狂的笔试题,才渐渐明白。
图样,图森破!哎我还是太年轻。
原题代码复杂,记不住,但考核的关键语法点嘴脸如下:
// 失效的指针
int main(void)
{
void (*p)(); // 定义了一个指针
int a = 100;
p = &a; // 让指针p指向了a
printf("a: %d\n", *p); // 将p的目标(即a)的值输出
}
下面是输出结果:
a: -3495729482452(乱码)
输出结果明显是一个乱码,但这个乱码究竟是啥玩意儿咧?我们将源代码稍作修改:
// 失效的指针
int main(void)
{
void (*p)(); // 定义了一个指针
int a = 100;
p