1.简单定义
int a=100;
int *p;
p = &a;
pringf("%d",*p);
int型指针指向变量a的地址,*表示“指向”,*p表示指针p所指向的变量。指针变量中*p只能存放地址(指针):*p = 100;是错误的。
2.指针与形参实参
</pre><p></p><pre name="code" class="html">p1 = &a;
p2 = &b;
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1,p2值变,a,b值也变。
int *p;
p = p1;
p1 = p2;
p2 = p;
此时仅指针指向变,a,b值不变。
3.指针与数组
p = &a[0]; //p的值是a[0]的地址
p = a; //p的值是数组a(即a[0])的地址
数组名只代表数组首元素的地址。
p+1指a[1]的地址。
*(a+5)与a[5]等价。取数组第六个元素的值。
p[i]相当于*(p+i),即a[i]的值。
两个地址不能相加,p1+p2是无实际意义。
*p++等价于*(p++),因为*与++优先级相同。先引用p的值,实现*p的运算,再使p自加1.
++(*p)表示p所指的元素值加1.
表示形式 | 含义 |
a | 二维数组名,指向a[0],即0行首地址 |
a[0],*(a+0),*a | 0行0列地址 |
a+1,&a[1] | 1行首地址 |
a[1],*(a+1) | 1行0列即a[1][0]首地址 |
a[1]+2,*(a+1)+2,&a[1][2] | 1行2列即a[1][2]首地址 |
*(a[1]+2),*(*(a+1)+2),a[1][2] | 1行2列即a[1][2]元素的值 |
int(*p)[4]表示定义p为一个指针变量,指向包含4个整型元素的一维数组。
指向函数的指针和多重指针待补充。