2015.08.21 结构体指针
amp 结构 指针 21 nbsp
2023-09-14 08:59:37 时间
1、 //整形指针指向整型变量的指针
int *p = NULL;//指针的标识,告诉编译器这是个指针变量
int a = 10;
p =
printf("%d\n",*p);//取出指针变量p指向内存中的值
*p = 20;//*向指针变量p指向的内存中存储数据
//浮点型指针:指向浮点型变量指针;
float *p1 = NULL;
float b = 3.14;
p1 = printf("%.2f\n",*p1);
//字符型指针:指向字符型变量的指针
char *p2 = NULL;
char c = a;
p2 =
printf("%c\n",*p2);
//总结:什么类型的指针,就是这个指针指向什么类型的变量
2、结构体指针的格式
指针的定义的格式:类型标示符 *指针变量名 =初始值;
结构体的首地址,就是结构体第一个成员变量的首地址
// int *p1 = NULL;
// int a = 20;
// p1 = // *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、公式: //结构体数组和指针 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://blog.csdn.net/qq_31810357
《C和指针》一导读 我在授课时,很早便开始讲授指针,而且在以后的授课过程中也经常讨论指针。我描述它们在各种不同的上下文环境中的有效用法,展示使用指针的编程惯用法(programming idiom)。我还讨论了一些相关的课题如编程效率和程序可维护性之间的权衡。指针是本书的线索所在,融会贯通于全书之中。
// int a = 20;
// p1 = // *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、公式: //结构体数组和指针 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://blog.csdn.net/qq_31810357
《C和指针》一导读 我在授课时,很早便开始讲授指针,而且在以后的授课过程中也经常讨论指针。我描述它们在各种不同的上下文环境中的有效用法,展示使用指针的编程惯用法(programming idiom)。我还讨论了一些相关的课题如编程效率和程序可维护性之间的权衡。指针是本书的线索所在,融会贯通于全书之中。
相关文章
- 路由策略和策略路由 & route-map
- Vector & ArrayList Hashtable & HashMap ArrayList & LinkedList
- Ubunut18 安装docker环境&&AWD攻防平台部署
- hive时间戳转换&UDF更新
- Apache Spark源码走读(七)Standalone部署方式分析&sql的解析与执行
- Linux nohup &使用 后台命令脱离终端运行
- [CI] CodeIgniter特性 & 结构
- 华为OD机试 - 最多等和不相交连续子序列(Java & JS & Python)
- AI&BlockChain:“知名博主独家讲授”人工智能创新应用竞赛【精选实战作品】之《基于计算机视觉、自然语言处理、区块链和爬虫技术的智能会议系统》软件系统案例的界面简介、功能介绍分享之一、会前智能
- 【异常】XStream异常: XML 文档结构必须从头至尾包含在同一个实体内,在实体引用中, 实体名称必须紧跟在 ‘&‘ 后面
- 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target 'android-7'
- 关于八数码问题中的状态判重的三种解决方法(编码、hash、<set>)
- 系统分析与系统设计:每个开发人员都需要知道的 System Analysis & System Design
- 谷歌技术"三宝"之MapReduce
- Unity手游之路<七>角色控制器