1、
变量的地址就是变量的指针。变量的值和变量的地址是不同的概念,变量的值是该变量在内存单元中的数据。
用来存放指针(地址)的变量就称为指针变量。
2、
若把某变量的地址赋值给指针变量p,则称指针变量p指向该变量。
3、
通常指针变量可以通过以下几种方法获得地址:通过地址运算“&”赋值,指针变量的初始化,
通过其他指针变量赋值用NULL给指针变量赋空值,以及通过调用标准函数赋值。
4、
“*”称为指针运算符(单目运算符),也称取内容运算符。当指针变量p指向一个变量x时,
可以用*p的形式存取该变量的值。此时,*p与变量x相互等价。
5、
取地址运算符“&”与指针运算符“*”作用在一起时,有相互“抵消”的作用。对于变量x,*&x与x相互等价。
6、
若定义了一维数组a和指针变量p,且p=a;,则以下四种表示相互等价:a[i]、p[i]、*(a+i)、*(p+i)。
7、
未对指针变量p赋值即p没有指向时,而就对*p赋值,该值就代替了内存中某单元的内容,有可能出现不可意料的错误。
8、
若p指向数组a,则:
⑴ p++ (或p+=1),使p指向下一元素。
⑵ *p++ 等价 *(p++)。作用是先得到p指向的变量的值(即*p),然后再使p+1→p。
⑶ *(p++)与*(++p)不同。前者为a[0],后者为a[1]。
⑷ (*p)++表示p指向的元素值加1,即(a[0])++
⑸如果p当前指向a数组中第i个元素,则: *(p--)相当于a[i--],先对p进行*运算,再使p自减; *(++p)相当于
a[++i],先使p自加,再作*运算。 *(-- p)相当于a[--i],先使p自减,再作*运算。