int i Val int double da Val10 double
判断变量类型 定义语句 去掉变量名 变量类型 int i. Val; int double da. Val[10]; double [10] double[10] char ca 2 Val[6][8]; char [6][8] char[6][8] unsigned *pu; unsigned * short *ps[6]; short *[6] short (*psa)[6]; short (*)[6] float (*pfa 2)[6][8] float (*)[6][8] 3
4
判断地址类型 定义语句 去掉变量名 地址 地址指向的类型 int i. Val; int &i. Val int double da. Val[10]; double [10] &da. Val double[10] char ca 2 Val[6][8]; char [6][8] &ca 2 Val char[6][8] unsigned *pu; unsigned * &pu unsigned * short *psa[6]; short *[6] &psa short *[6] short (*psaa)[6]; short (*)[6] &psaa short (*)[6] float (*pfa 2)[6][8] float (*)[6][8] &pfa 2 float (*)[6][8] 6
判断指针类型 定义语句 去掉*和指针名 指针指向的类型 int *pi; int double (*pda)[10]; double [10] double[10] char (*pca 2)[6][8]; char [6][8] char[6][8] unsigned **ppu; unsigned * short *(*pps)[6]; short *[6] short (*(*ppsa))[6]; short (*)[6] float (*(*ppfa 2))[6][8]; float (*)[6][8] 7
10
11
12
13
14
15
21
程序 arrayname. c 的输出结果 ai. Num == &ai. Num[0] ad. Num+1 == &ai. Num[0]+1 != &ai. Num+1 22
24
25
的 输 出 结 果 (1 /2 ) 2359008 + 1 等 于 2359016 ?! ptr di f f. c 2359088 + 1 等 于 2359092 ?! 26
30
31
*(days + index) == days[index] 34
int sum(int *ar, int n); int sum(int *, int); int sum(int [], int); 36
int sum(int *ar, int n) ar[i] == *(ar + i) 对比 12行和13行 38
answer = sump(marbles, marbles + SIZE); 并不是指向 marbles 的最后一个元素,而是指 向 marbles 的最后一个元素后面的位置。 数组 marbles 所有的元素 0 1 marbles 2 3 4 5 6 7 8 9 marbles+SIZE 41
42
answer = sump(marbles, marbles + SIZE); end start start start 0 1 marbles 2 3 4 5 6 7 8 9 marbles+SIZE 43
- Slides: 43