Prepartion
学习2.9 (Bitwise operators), 5.1 (Pointers and Addresses) through 5.5(Character Pointers and Functions) and 6.4 (pointers to structures) in K&R。
Bitwise operators
其中^表示按位异或,~表示求补。必须区分位运算符&,|和逻辑运算符&&,||。For example, if x is 1 and y is 2, then x & y is zero while x && y is one. 从这个例子中我们可以清除的发现两者的不同。
Pointers and Arrays
对C语言指针的学习,指针和数组在很大程度上非常相似,因此这部门的标题定为Pointers and Arrays。
p=&c,将变量c的地址赋给p,p称为指向c的指针。&运算符仅适用于内存中的对象:变量和数组元素。 它不能应用于表达式,常量或寄存器变量。
以下代码片展示了*和&运算符的简单使用:
int x = 1, y = 2, z[10];
int *ip; /* ip is a pointer to int */
ip = &x; /* ip now points to x */
y = *ip; /* y is now 1 */
ip = 0; /* x is now 0 */
ip = &z[0]; /* ip now points to z[0] */
在指针与数组的对应关系中,需要注意一点,及a[i]可以用*(a+1)来表示,及a相当于是指向a[0]的指针。但是a不是变量不能执行类似于a=p的赋值操作,或a++的算数运算操作。