C语言结构体中成员若是一个指针时的疑惑??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言结构体中成员若是一个指针时的疑惑??相关的知识,希望对你有一定的参考价值。
如下两个情况: 情况一:最简单的使用 struct stus int nums; int ages; ; struct stur int numr; int ager; struct stus temp; boy1; 这里可以像这样应用 boy1.numr = 2; boy1.ager= 22; boy1.temp.nums=3; boy1.temp.ages=23; 以上情况一是最通常的使用方法,但我的疑问是下面的情况二 情况二:但如果是这样,是否是循环的调用,如下: struct stu int num; int age; struct stu *next; boy2; 应用时是不是这样了? boy2.num = 2; // 使用正确 boy2.age= 25; // 使用正确 boy2.next.num = 3; // 疑问1:这样使用正确吗? boy2.next.age = 23; // 疑问1:这样使用正确吗?? boy2.next.next= 某个地址; // 疑问1:那这样使用也是正确的吗??? 更大的疑问是(疑问2:),此时因为next是struct stu本身的一个成员,对于结构变量boy2来说,它首先调用它的成员即boy2.next,但同时next是用struct stu定义的一个指针(这个指针它又包含了struct stu的三个成员),所以,boy2.next这时不是又可以重新调用它的三个成员,即boy2.next.num、boy2.next.age、boy2.next.next,如果是这样那不就是说,boy2启不是有无穷个.next了??是吗???如下: boy2.next.next.next.next.next.............num = 100; // 这里的省略号............表示无穷个.next boy2.next.next.next.next.next.............age = 101; boy2.next.next.next.next.next.............next = 某个地址; 不知道我的理解是否正解??请高手们指点指点。
参考技术A 类型不同struct
student
是一个类型
char数组
是一个类型
p是指向类型struct
student的指针
stu[1].name是真相char[]的指针。
c++是强类型语言,类型必须对应
你可以通过强制类型转换来实现
p
=
(struct
student
*)
stu[1].name
,但是根据本题目情况,这样产生的结果是错误的
以上是关于C语言结构体中成员若是一个指针时的疑惑??的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )