概念1 指针数组
指针数组可看做定义了一系列指针,如定义了指针数组p[],p和p[0]是代表同一个地址。不可用*p,必须*p[0],如指向的是字符串,*p[0]表示的是字符串第一个字符,*(p[0]+1)表示第二个。
概念2 二重指针
二重指针为指向指针的指针,
定义格式为:变量类型 **变量名;
如:int a=10;int *p=&a;int **pp;
指针变量也是变量,因此二重指针也是变量;
变量的成分有变量名,变量地址,变量实际值。7
我们有如下关系:
变量名 | a | p | pp |
---|---|---|---|
地址 | &a | &p | &pp |
实际值 | 10 | &a | &p |
二重指向:
我们知道,指针p可以指向a,
即 *p=a
也有 *pp=p
那么用*pp代替p有 **pp=a
我们得到 **pp=*p=a
二重取地址 :
我们知道,指针p的实际值为变量的地址。
即 p=&a
也有 pp=&p
用&a代替p,代入上式有 pp=&&a
我们得到 pp=&p=&&a
概念3 const指针
设为const的变量,比如const指针,只能改变其指向的值,而不能改变其自身的值,比如定义了两个指针。const char *p1="hello",*p2="world"。
不能做p1=p2,但是可以*p1=“world”。