冲刺 · 变式 2:二维数组的地址

二维数组在内存里按行连续存放。a + i 指向第 i 行,*(a + i) 即 a[i],是第 i 行首元素的地址,所以 *(*(a + i) + j) 就是 a[i][j]。 两个指向同一数组的指针相减,得到的是相差几个元素。 #incl

开始练习 →

冲刺 · 变式 3:字符指针挪两格

字符指针 p 指向字符串中间某个位置时:*p 是那一个字符;printf("%s", p) 从那里一直输出到 '\0'。 #include <stdio.h> #include <str

开始练习 →

冲刺 · 变式 4:哪个 swap 真的换了

两个函数都收到了地址。一个交换的是两个指针变量(形参的副本),一个交换的是指针指向的值。 #include <stdio.h> void swap1(int *p, int *q) { int *t; t =

开始练习 →

冲刺 · 带参数的宏怎么展开

#include <stdio.h> #define S(x) x * x #define T(x) (x) * (x) int main(void) { int a = 3; printf("%d

开始练习 →

冲刺 · 递归先进去再打印

#include <stdio.h> void fun(int n) { if (n > 1) fun(n / 2); printf("%d", n % 2); }

开始练习 →

冲刺 · 带转义字符的字符串长度

#include <stdio.h> #include <string.h> int main(void) { char s[] = "ab\n\\c\0de"; printf(

开始练习 →

选择专项 · 共用体占多大

二级选择题问 sizeof 的套路: 结构体:每个成员各占各的地方,同时有效。 共用体:所有成员共用同一块内存,大小取最大的那个成员;同一时刻只有最后存进去的成员有效。 考试按 VC2010:char 1 字节、int 4 字节、doubl

开始练习 →

选择专项 · 位运算先写二进制

二级位运算选择题的套路:先把数写成二进制、上下对齐,再一位一位算。 & 两位都是 1 才得 1;| 有一位是 1 就得 1;^ 两位不同得 1。 >> n 右移 n 位,正数相当于除以 2ⁿ;<< n 左移,

开始练习 →

选择专项母题:结构体指针取成员

#include <stdio.h> struct Stu { char name[10]; int score; }; int main(void) { struct Stu s[3] = {{&q

开始练习 →

选择专项变式 1:++ 和 -> 谁先

#include <stdio.h> struct Stu { char name[10]; int score; }; int main(void) { struct Stu s[3] = {{&q

开始练习 →