2、结构体指针的格式
指针的定义的格式:类型标示符 *指针变量名 =初始值;
结构体的首地址,就是结构体第一个成员变量的首地址
// int *p1 = NULL;
// int a = 20;
// p1 = &a;
//
//
// *p1 等价于 a
// -> 指向操作符
// -> 前面只能是结构体指针变量,而且必须是指向结构体变量首地址的结构体指针变量
3、经典例题——————————————————
//定义一个老师的结构变量“LiWu hua”
//通过结构体指针将姓名中的首字母改为大写,并把' ' 改为'_';
// Teacher teacher2 = {"xia yin jun",30,"playPlane"};
// t = &teacher2;//指针的重指向
// if (t->name[0] >= 'a' && t->name[0] <= 'z') {
// t->name[0] -= 32;
// }
//
// int i = 0;
// while (t->name[i] != '\0') {
// if (t->name[i] == ' ') {
// t->name[i] = '_';
// }
// i++;
// }
//
//
//
//
//
//
//
//
//
//
//
//
// printf("%s%d %s\n",t->name,t->age,t->hobby);
4、公式:
//结构体数组和指针
// ->使用指向操作符访问数组中元素
5、
区别
//str 数组中存储的字符串是从常量去拷贝过来的,放到自己的空间里这时修改数组中的数据,没有影响到常量区内容;
// char str[] = "iPhone";
// char *p1 = str;
// p1[1] = 'p';
// printf("%s\n",p1);
//*p2指向的是常量区的字符串,常量区的内容是不允许修改的,这时指针p2只拥有访问权,没有修改权
// char *p2 = "iPhone";
// p2[1]= 'p'; error !!!
// printf("%s\n",p2);
//
//
//
//
//
//
//