#include<stdio.h>
int main()
{
char s[ ]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
return 0;
}
输出:15
注意点:根据符号的优先级,*p++与*(p++)可以等价
#include<stdio.h>
int main()
{
int *a, b=3;
*a=b;
printf("%d",*a) ;
}
该程序实际上无法执行,因为指针未初始化。正确语法应该为
a=&b;
#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。
# 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
数组名本身也是一个指针