图8.1函数内存映射方式1.指向函数指针变量的定义C语言中可以定义指针变量来存储函数的首地址,并利用该指针变量对函数进行调用。指向函数的指针变量的真正作用是作为函数参数使用,使程序在功能的实现上具有更大的灵活性。指向函数的指针变量求最大值、最小值和两数之和。......
2023-11-20
指向结构体变量的指针变量叫结构体类型指针变量,其定义方式、使用方法与指向基本变量的方法相同。其定义形式为:
struct结构体名 *结构体指针变量;
例如:若已定义结构体类型struct Student,则struct Student*ptr;定义了一个struct student类型的指针变量ptr。
要使结构体指针变量指向某个结构体变量,其基本形式为:
结构体指针变量=&结构体变量;
例如,下面的C语句段:
struct Student stu,*ptr;
ptr=&stu;
也可以在定义结构体类型指针变量的同时对其初始化,例如:
struct Student stu,*ptr=&stu;(www.chuimin.cn)
通过指向结构体变量的指针变量访问结构体变量成员使用如下形式:
(*结构体指针变量).结构体成员;
例如:(*ptr).name、(*ptr).sex等。
在使用指向结构体变量的指针来引用结构体变量时,注意括住指针变量引用形式的圆括号是必不可少的,如(*ptr)。因为成员符“.”的优先级高于“*”。如果去掉括号写作*ptr.sex则等价于*(ptr.sex),这样意义就完全不对了。由于用结构体类型指针变量表示结构体变量成员时,表达式形式非常容易错写为:*指针变量.成员名,为了使得表达式更清晰且不容易误写,C语言提供了指向运算符“->”,对通过指针变量访问结构体变量成员给出了一种简洁的表示形式:
结构体指针变量->成员;
例如:(*ptr).sex和ptr->sex表达了同样的结构体成员分量。
使用结构体指针变量时还需要特别注意,结构体变量的地址与结构体变量成员的地址是不同的。例如,有定义:struct Student stu2,*ptr;,则使用指针变量ptr即可指向结构体变量stu2,但结构体变量成员stu2.sex在示例结构体类型中是一个字符类型变量,不能被结构体类型指针指向,而只能使用字符类型指针变量存放它的起始地址。
【例10.9】 已知某学生3门课程的成绩存放在一个结构体变量中,请设计一个独立的函数计算该学生的平均成绩,要求函数使用结构体指针变量做函数的形式参数。
Average函数中使用结构体指针变量s作为形式参数,函数被调用时该指针变量指向实参结构体变量stu,函数中分别使用了s->math和(*s).C_Language两种表达形式操作了指针变量指向的结构体数据的成员。程序执行的结果是:该学生的平均成绩为81.00。
有关C语言程序设计基础(第3版)的文章
图8.1函数内存映射方式1.指向函数指针变量的定义C语言中可以定义指针变量来存储函数的首地址,并利用该指针变量对函数进行调用。指向函数的指针变量的真正作用是作为函数参数使用,使程序在功能的实现上具有更大的灵活性。指向函数的指针变量求最大值、最小值和两数之和。......
2023-11-20
一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的首地址。有了结构体指针变量,就能方便地访问结构体变量的各个成员。下面通过例子来说明结构体指针变量的具体说明和使用方法。图7.6程序运行结果说明:程序定义了一个结构stu,定义了stu 类型结构体变量boy1,并初始化赋值,还定义了一个指向stu 类型结构的指针变量pstu。......
2023-10-21
用户自己定义的结构体类型,与系统定义的标准类型一样,是可以用来定义结构体类型的变量。这种方法定义的结构体类型在程序后面不可使用,因为缺少完整的结构体类型名。......
2023-10-21
当一个指针指向一个结构体变量时,称为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针即可访问该结构变量。结构体指针变量定义的一般形式为:struct结构类型名 *结构指针变量名在定义了struct student结构类型后,如要定义一个指向该结构类型的指针变量pstu,可写为:struct student*pstu;当然也可在定义struct student结构类型的同时定义pstu。与前面讨论的各类指针变量相同,结构指针变量也必须要先赋值后使用。......
2023-11-18
“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。......
2023-11-20
取内容运算符*,又称间接引用运算符,结合性自右而左,用来表示指针变量所指的变量。指针变量定义时,“*”仅表示其后的变量是指针类型变量。图6.5指针的算术操作若设指针变量p 的值为2000,对于整型数据,其长度是2 个字节。然后,通过指针变量升序输出。图6.7指针变量p1 和p2 交换前后的指针方向......
2023-10-21
图5.3指针变量指针变量本身也是变量,所以指针变量在使用之前也需要定义。为指针变量赋值的方法有两种:一种是定义后,使用赋值语句的方式;另外一种是定义的同时进行初始化方式。......
2023-11-20
void类型指针中的数据不能访问,如果非要访问的话,可以通过强制转换将void类型指针转换为与所指向的数据类型相符的类型。所谓“相同存储对齐限制”是指void类型指针所指的数据在内存中所占的长度与显式转换后的指针所指的数据在内存中所占的长度相等。同理,如果是将void类型转换为具有更小存储对齐限制的指针时,也可能引起数值的改变。......
2023-11-18
相关推荐