#include

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;

}