理解指针首先要记住一点,通常情况下指针就是地址,永远不要忘记这一点。当然也有例外,所以这里说通常情况下,但是那个例外我们一般很难接触到,所以这里就不再赘述了,后面这个系列会出指针的高级用法,在那里我会讲到这些。
声明
首先,我们先看一下指针的声明。指针声明和声明其他变量一样,唯一不同的一点就是要在变量前加 *
。
int *p;
初始化
-
可以用地址初始化。
int i; int *p; p = &i;
-
可以一边声明一边初始化,但只能用地址去初始化,而且必须首先声明
i
。int i, *p = &i;
-
两个运算符
指针中最重要的两个运算符是*
和&
符号。对于前者,我们需要注意int *p = &a
和*p = a
中的*
是完全不同的,第一个*
用来声明一个指针,后一个用来间接寻址,访问存储在对象中的内容。后者是取地址符号,可以找到变量的地址,并赋给一个指针变量。
指针赋值
C语言允许使用赋值运算符进行指针的复制,前提是两个指针具有相同的类型。
正如前面所说,我们可以通过取地址符号为一个指针变量赋值:
int i, j, *p, *q;
p = &i;
当然,也可以指针与指针之间赋值:
q = p;
另外,通过间接寻址符号*
我们可以为指针指向的对象赋值:
*p = 1; //此时i的值为1
也可以将一个指针指向的对象的值赋给另一个指针指向的对象:
*q = *p;
网友评论