1.*p++:
#include<stdio.h>
int main()
{char s[ ]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);return 0;
}
输出:15
注意点:根据符号的优先级,*p++与*(p++)可以等价
2.指针的初始化:
#include<stdio.h>
int main()
{int *a, b=3;*a=b;printf("%d",*a) ;
}
该程序实际上无法执行,因为指针未初始化。正确语法应该为
a=&b;
3.指针与其指向的变量之间的关系:
#include<stdio.h>
int main(void)
{int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;p = x;pp = &p;printf("%d ", *(p++)); /* 数字后有一个空格 */printf("%d\n", **pp);return 0;
}
输出:2 4
在输出**pp时,由于pp指向的变量为指针p,由于此时p已经指向数组的第二个元素,所以输出应该为数组的第二个元素。也就是说pp的值是p的地址,故*pp=p,因而**pp=*p=4。
4.指针与数组名之间的关系:
# include <stdio.h>
int main(void)
{int a[10] = {0,1,2,3,4,5,6,7,8,9}, *p = a+3;printf("%d", p[2]);return 0;
}
输出:5
数组名本身也是一个指针