结构体数组与指针习题
《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p165
习题6
1.写出下述程序的运行结果
#include<stdio.h>
struct s
{int x,*y;
}*p;
int data[]={10,20,30};
struct s array[]={ 100,&data[0],200,&data[1],300,&data[2]
};
void main()
{p=array;printf("%d\n",++p->x);printf("%d\n",++*p->y);printf("%d\n",*++p->y);
}
编译后结果如下:
思路:
第一个输出语句printf("%d\n",++p->x);
根据c语言运算符的优先级与结合性,
->
优先级最高,结合方向从左到右
++
优先级第二,结合方向从右到左
- 指针p指向结构体
struct s array[]
数组第一个元素100 - 指针p指向结构体
struct s array[]
数组第一个元素100
第二个输出语句printf("%d\n",++*p->y);
++
和*
优先级相同
- 指针p先指向y,即结构体
struct s array[]
第二个元素&data[0]
(代表数组data[0]
的地址) - 指针p先指向y,即结构体
struct s array[]
第二个元素&data[0]
(代表数组data[0]
的地址) - 在与
*
结合,即取内容,即data[0]
的值10,
再++
,即内容+1,结果为11
第三个输出语句printf("%d\n",*++p->y);
- 指针p指向y,即指向结构体
struct s array[]
数组&data[0]
的地址 - 然后与
++
结合,指针移动一个结构体,指向&data[1]
的地址 - 在与
*
结合取地址,结果为20
结构体数组与指针习题相关推荐
- 指向结构体数组的指针
我们知道,结构体数组的每一个元素都是一个结构体变量.如果定义一个结构体指针变量并把结构体数组的数组名付给这个指针变量的话,就意味着将结构体数组的第一个元素的地址,即第一个结构体变量的地址,也即第一个结 ...
- 【结构体】 结构体引用、结构体数组指针、包含结构的结构体
目录 一.概念.变量的定义 初识结构体 结构体变量的定义.引用结构体类型的初始化 二.结构体的数组 认识结构体数组 初始化结构体数组 三.结构体指针 初识结构体指针 指向结构体数组的指针 结构体作为函 ...
- C 语言结构体数组指针以及函数
结构体数组指针 指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址. 设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第 0个元素,ps+1 指向第一个元素,ps+ ...
- 结构体对齐导致结构体数组大小变化引发的指针越界操作问题.
老大昨晚喊我过去帮他看看程序出现的奇怪问题, 挺晚才回去, 所以没来得及写, 今天反刍(恶......)了一下记录 下来. 哈哈.......被人需要果然是一种幸福. -_-|| 这个 DSP 程序驱 ...
- c语言动态生成结构体结构,C语言实现动态结构体数组
C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了包含C外,还有C++各种新语法,新库! 不过虽然C++用起 ...
- c语言 static结构体,C语言实现动态结构体数组
C语言实现动态结构体数组 祖仙教小凡仙 海鲨数据库架构师 C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了 ...
- 一、C语言结构体数组
1.如何定义结构体数组 a) 单独写成一行来定义 struct student stu[3]; //可以用的下标是 stu[0]--- stu[2]//定义结构体数组的时候还可以同时进行初始化 str ...
- 结构体变量和指向结构体变量的指针
目录 概念 内存分配 对象的引用 结构体变量和结构体指针变量作形参的区别 以结构体变量和结构体指针变量形参的函数调用 概念 结构体变量是指将不同的数据类型整合成一个有机的整体,以便于调用. struc ...
- 指向结构体变量的指针
前面我们通过"结构体变量名.成员名"的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针. 前面讲过,&student1 表示结构体变量 student1 的首地址 ...
最新文章
- 2020-11-05 关于前端‘古董‘dojo的树结构如何默认展开根节点
- uploadify初体验
- 钢铁厂来了“新员工”破解废钢定级行业难题
- 求10以内平均数的c语言,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...
- 卡方检验python程序_Python从零开始第二章(1)卡方检验(python)
- spring boot 分布式锁组件 spring-boot-klock-starter
- mysql iostat_iostat命令详解_MySQL
- C#、VB.NET与三菱Q02、QJ71E71、L02、LJ71E71、FX3U、FX5U等通讯的DLL及调用源代码
- 辽宁电信TY12008-Z_智能机顶盒2.0_S905MB_线刷固件包
- UML统一建模语言简介
- 09-新闻发布系统数据库-管理角色数据操作
- 炉石兄弟 修复图腾师问题 by大神beebee102, 还有阴燃电鳗
- Aspose.Words 使用InsertNode()在文档末尾插入分页符
- 带有风的诗词_2017含有风的诗句大全
- 初生牛犊不怕虎,管他呢! 干就是了。
- 经典面试题:手机扫描二维码的测试用例(建议收藏)
- Ubuntu窗口过大?按钮都点不到怎么办?
- ANDROID下获取IMSI及IMEI码
- 什么叫计算机网络虫洞,虫洞:危险与希望并存
- DiskPart分区工具命令详解
热门文章
- IBM Bluemix云计算大会见闻
- Android入门教程 (二) 第一个App HelloWorld
- mysql5 数据类型,Mysql学习笔记5-----字段的数据类型
- 三十八、页面分配策略
- sound.js # pixi辅助插件 — 中文翻译教程
- 服务器空闲搭建什么网站,空闲的云服务器可以干什么
- 天津理工大学c语言实验2答案,天津理工大学-c语言上机报告2.doc
- jpa 指定字段内容按照顺序排序(orderBy when then)
- android rom 评测,腾讯定制Android 4.0 ROM评测 附tati刷机教程
- 修改服务器里的端口,怎么修改windows服务器登陆端口号