1、指针就是内存地址:即地址指向该变量单元。
专门用来存放另一个变量的地址(即指针),则它称为“指针”。
2、变量的值和地址:
(1)Int*pointer,a;pointer=&a;&给出该变量的地址
(2)Int*pointer,a;*pointer=a;*意思是取出存储被指向地址中的数值。
(3)指针的目的:要通过指针能够找到被指的变量,或者说要通过指针间接访问到被指的变量。
(4)指针变量定义:类型*指针变量名;
(5)指针变量使用之前必须赋予具体的值,只能赋地址。指针没有初始化会出现系统混乱。
int*pointer=NULL或int*pointer=0。
(6)指针变量值的改变,相当于指针指向的改变。
3、void类型的指针:可以指向任何的变量,但是在使用时,需要进行强制类型转换后才能使用。
4、指针运算:
所有类型指针变量的大小都是4个字节。
5、指针之间只有减法运算,没有其他的运算。
pnID–pnID1=(pnID-pnID1)/sizeof(指针指向类型)
6、数组元素指针:就是数组元素的地址。
7、inta[10];Int*p;p=&a[0]<==>p=a;(注意:数组名a不代表整个数组,只代表数组首元素的地址。)
8、引用数组元素时的指针运算
加一个整数(用+或+=),如p+1(指向同一数组中的下一个元素)
减一个整数(用-或-=),如p-1(指向同一数组中的上一个元素)
自加运算,如p++,++p
自减运算,如p--,--p
两个指针相减,如p1-p2(只有p1和p2都指向同一数组中的元素时才有意义)。
*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。
9、指针引用数组的方法:
(1)下标法,如a[i]形式。
(2)指针法,如*(a+i)或*(p+i)。
(3)数组名计算数组元素地址,找出元素的值。
10、指针变量的引用:
(1)*p++,由于++和*同优先级,结合方向自右而左,等价于*(p++)。
(2)实参数组名是指针常量,但形参数组名是按指针变量处理。
(3)指针变量以实参的形式传递给函数,可以在函数中改变实参的值。
11、字符数组表示字符串。
注意:1.数组最后一个元素为‘\0’。
2.字符串的长度不要超过数组的大小,一般要确保数 组元素数比字符串长度多1。
用字符串指针指向一个字符串也可以表示一个字符串。
12、charstring1[]=“CLanguage”;char*string2=“CLanguage”;
1.数组名string1是常量,存放的是以‘\0’结束的字符串;
指针string2是变量,存放的是字符串的首地址。
2.可以将字符串直接赋给string2,而string1只能逐个元素依次赋值。