正在加载图片...
赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。如果boy 是被说明为stu类型的结构变量,则: 是正确的,而: 是错误的 结构名和结构变量是两个不同的概念,不能混淆。结构名只能表示一个结构形式,编译 系统并不对它分配内存空间。只有当某变量被说明为这种类型的结构时,才对该变量分配存 储空间。因此上面&stu这种写法是错误的,不可能去取一个结构名的首地址。有了结构指针 变量,就能更方便地访问结构变量的各个成员。 其访问的一般形式为: (*结构指针变量).成员名 或为: 结构指针变量→>成员名 例如 (=*pstu).num 或者: 应该注意(*pstu)两侧的括号不可少,因为成员符."的优先级高于"*"。如去掉括号写 乍*pstu.num则等效于*(pstu.num),这样,意义就完全不对了 下面通过例子来说明结构指针变量的具体说明和使用方法 struct stu It char *name char sex t score I boy 1=(102, Zhang ping",'M, 78. 5), *pstu main pstu=&boy l printf ("Number%d\nName=%s\n", boy 1. num, boy 1 name) printf("Sex=%c\nScore=%f\n\n", boy l sex, boy l score) printf("Number=%d\nName=%s\n",(*pstu). num, (*pstu) name printf("Sex=%c\nScore=%f \n\n",(*pstu). sex, (*pstu) score printf("Number%d\nName=%s\n", pstu>num, pstu->name) printf("Sex=c\nScore=%f\n\n", pstu->sex, pstu->score) 本例程序定义了一个结构stu,定义了stu类型结构变量boy1并作了初始化赋值,还定 义了一个指向stu类型结构的指针变量pstu。在main函数中,pstu被赋予boy1的地址,因 此pstu指向boy1。然后在 printf语句内用三种形式输出boyl的各个成员值。从运行结果赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。如果 boy 是被说明为 stu 类型的结构变量,则: pstu=&boy 是正确的,而: pstu=&stu 是错误的。 结构名和结构变量是两个不同的概念,不能混淆。结构名只能表示一个结构形式,编译 系统并不对它分配内存空间。只有当某变量被说明为这种类型的结构时,才对该变量分配存 储空间。因此上面&stu 这种写法是错误的,不可能去取一个结构名的首地址。有了结构指针 变量,就能更方便地访问结构变量的各个成员。 其访问的一般形式为: (*结构指针变量).成员名 或为: 结构指针变量->成员名 例如: (*pstu).num 或者: pstu->num 应该注意(*pstu)两侧的括号不可少,因为成员符“.”的优先级高于“*”。如去掉括号写 作*pstu.num 则等效于*(pstu.num),这样,意义就完全不对了。 下面通过例子来说明结构指针变量的具体说明和使用方法。 【例 11.5】 struct stu { int num; char *name; char sex; float score; } boy1={102,"Zhang ping",'M',78.5},*pstu; main() { pstu=&boy1; printf("Number=%d\nName=%s\n",boy1.num,boy1.name); printf("Sex=%c\nScore=%f\n\n",boy1.sex,boy1.score); printf("Number=%d\nName=%s\n",(*pstu).num,(*pstu).name); printf("Sex=%c\nScore=%f\n\n",(*pstu).sex,(*pstu).score); printf("Number=%d\nName=%s\n",pstu->num,pstu->name); printf("Sex=%c\nScore=%f\n\n",pstu->sex,pstu->score); } 本例程序定义了一个结构 stu,定义了 stu 类型结构变量 boy1 并作了初始化赋值,还定 义了一个指向 stu 类型结构的指针变量 pstu。在 main 函数中,pstu 被赋予 boy1 的地址,因 此 pstu 指向 boy1。然后在 printf 语句内用三种形式输出 boy1 的各个成员值。从运行结果
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有