#include <stdio.h>
test1(char *p)
{
printf(“1—%s \n”,p);//这里的p是重新定义的变量,指向同一块内存,所以也是输出0123456789
printf(“1—0x%c \n”,*p);//输出*(p+0)对应的字符,也就是字符0
printf(“1—0x%x \n”,&p);//输出指针P的自身地址,注意与主函数p的地址不同
}
//p指向一个地址,别的一概不知
test2(char *p)
{
printf(“2—%s \n”,p);//这里的p是重新定义的指针变量,指向主函数中p的地址,输出内容不确定
printf(“2—%c \n”,*p);//输出*(p+0)对应的字符,输出内容不确定
printf(“2—0x%x \n”,&p);//输出指针P的自身地址,注意与主函数p的地址不同
}
//p指向一个地址,还知道指向的地址也是一个指针
test3(char **p)
{
printf(“3—%s \n”,*p);//这里的p是重新定义的指针变量,指向主函数中p的地址,*p=主函数的p,所以输出0123456789
printf(“3—%c \n”,**p);//*p=主函数的p,**p=*(主函数的p+0),也就是字符0
printf(“3—0x%x \n”,&(*p));//*p=主函数的p,这里输出主函数p的地址
}
int main()
{
char *p=”0123456789″;
printf(“0—%s \n”,p);//p是指针,输出p指向的字串内容
printf(“0—0x%c \n”,*p);//输出*(p+0)对应的字符,也就是字符0
printf(“0—0x%x \n”,&p);//输出指针P的自身地址
test1(p);//把指针p传递到函数中
test2(&p);//把指针p的地址传递到函数中
test3(&p);//把指针p的地址传递到函数中
return 0;
}