本文共 2052 字,大约阅读时间需要 6 分钟。
int *p =NULL;//指针的标识,告诉编译器这是个指针变量 printf("%d\n",*p);//取出指针变量p指向内存中的值 *p = 20;//*向指针变量p指向的内存中存储数据 p1 = &b; printf("%.2f\n",*p1); //总结:什么类型的指针,就是这个指针指向什么类型的变量 指针的定义的格式:类型标示符*指针变量名 =初始值; // int *p1 = NULL; // int a = 20; // p1 = &a; // -> 前面只能是结构体指针变量,而且必须是指向结构体变量首地址的结构体指针变量 //通过结构体指针将姓名中的首字母改为大写,并把' '改为'_'; // Teacher teacher2 = {"xia yinjun",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); Student stu[5] = { {1,"guanXi",'m',19,90}, {3,"tingFeng",'m',20,91}, {2,"boZhi",'w',18,99}, {5,"liZongRui",'y',30,59}, {4,"zhaoSi",'y',40,100} }; 数组名就是指针,指向数组的首地址,数组首个元素的地址 *stu : stu[0] *(stu +1) : stu[1] *(stu +2) : stu[2] *(stu +3) : stu[3] *(stu +4) : stu[4] *(stu +5) : stu[5] //访问数组中元素的姓名成员变量 // (*stu).name : stu[0].name //(*(stu+1)).name : stu[1].name //(*(stu+2)).name : stu[2].name //(*(stu+3)).name : stu[3].name //(*(stu+4)).name : stu[4].name //(*(stu+5)).name : stu[5].name printf("%s\n",(*stu).name);1 printf("%s\n",stu[0].name);// ->使用指向操作符访问数组中元素 //stu->name : stu[0].name //(stu + 1)->name : stu[1].name //(stu + 2)->name : stu[2].name //(stu + 3)->name : stu[3].name //(stu + 4)->name : stu[4].name printf("%s\n",stu->name); printf("%s\n",(stu +1) ->name ); //将数组中的第四个元素的名字改为“aJiao” strcpy((stu+3)->name, "aJiao"); printf("%s\n",(stu + 3)->name); 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); 转载地址:http://xbypo.baihongyu.com/