C语言二级辅导:结构数组与指针运算实例解析

需积分: 4 3 下载量 56 浏览量 更新于2024-07-31 1 收藏 186KB PPT 举报
在C语言计算机二级辅导材料中,我们首先关注的是结构数组成员的访问。"structrec"是一个结构体类型,包含两个整型成员x和y。给定的代码段定义了一个结构数组`s`,其中包含两个结构体对象{{4, 28}}和{{9, 36}},以及一个指向`s`数组首元素的指针`p`。题目要求计算表达式`(p->y / p->x * s[1].x + s[1].y)`的值。这个表达式涉及到结构体指针访问成员、算术运算以及数组下标操作。根据C语言的运算顺序,首先会计算`p->y`和`p->x`的值(即`s[1].y`和`s[1].x`),然后进行除法和乘法,最后加和。 接下来的代码展示了指针概念的应用。第68行展示了四种类型的指针变量: 1. `int *p1`:这是一个指向整型变量的普通指针,可以用来间接访问和修改整数变量的值。 2. `int *p2[5]`:这是一个指针数组,包含5个指向整型变量的指针,每个元素都可以独立地指向一个整数变量。 3. `int (*p3)()`:这是一个指向函数的指针,存储的是一个返回整型值的函数地址。 4. `int(*p4)[5]`:这同样是一个指针,但它指向一个一维数组,该数组有5个整型元素。 接着是关于算术运算符、关系运算符、逻辑运算符、条件运算符和赋值运算符的优先级和顺序,以及它们在表达式中的应用。例如,`a=(m=a>b)&&(n=c>d)||(++a==b--)`这一表达式的执行顺序遵循了先算术、后关系、再逻辑,然后是条件运算符和赋值,最后是逗号运算符。在给定的初始变量值`a=1, b=1, m=0, n=6`下,运算结果将根据这些规则计算。 第四个例子涉及字符串处理,包括`strlen`函数(计算字符串长度)和`strcpy`函数(字符串复制)。`sizeof(s)`返回`s`数组占用的内存大小,`strlen(s)`计算字符串`s`中有效字符的数量。这里,`t`被初始化为`s`的副本,然后`t+2`表示字符串的第三个字符开始,输出结果为字符串长度和`t`的前两个字符。 最后一个程序段是关于宏定义和表达式展开。宏`#define SQR(x) x*x`将`SQR(a+b)`替换为`(a+b)*(a+b)`,在`main`函数中,计算`s`的值为`SQR(a+b)`乘以4,也就是`(a+b)*(a+b)*4`,给定`a=2`和`b=3`,`s`最终的结果为20。 总结,这段C语言计算机二级辅导材料涵盖了结构体和指针的使用、运算符优先级、字符串处理以及宏定义的实现,这些都是C语言编程的基础知识点,对理解和通过计算机二级考试非常重要。