问题描述
- 关于c语言结构体指针的问题
-
结构体指针只包含了结构体的首地址还是包含了所有成员的地址?还有结构体的首地址是什么,比如第一个成员是一个数组,那么首地址是不是就是这个数组的首地址?
解决方案
结构体指针既是结构体首成员的地址,也是结构体的首地址。你说的是对的。
好比数组指针既是数组的首地址,也是数组第一个元素的首地址。
解决方案二:
指针也可以指向一个结构体变量。定义的一般形式为:
struct 结构体名 *变量名;
前面已经定义了一个结构体 stu:
struct stu{ char *name; int num; char sex; float score;};
下面定义一个指向 stu 的指针变量 pstu:
struct stu *pstu;
当然在定义结构体的同......
答案就在这里:C语言结构体和指针
----------------------
解决方案三:
结构体,不是数组,没有首地址一说
结构体 对象的地址,就是分配给这个对象的地址
和int 地址一样
不过结构体有内部成员,
C 或者
C++POD类型
结构体对象的第一个成员的地址(如果有地址)
和结构体对象地址相同。
解决方案四:
首先,指针是一个存放地址的变量,就好比一排房子,你要找的东西在这排房子的某一间内,但具体的房间编号在1号房内,那么要取到目标物就要先到1号房去把编号找到,然后根据编号去找对应的房间;
指针就是这个存放编号的房间,并且它只能放一个编号,不同类型的指针可以存放不同类型的指针;
要区分结构体类型 和 结构体变量,前者是定义一个数据类型(并不分配空间),后者是根据这个类型在内存中分配了具体的空间,
结构体变量是根据它的成员的类型依次分配空间的,各成员变量的内存分配是相邻的,所以第一个成员的地址就是这个结构体变量的地址.
时间: 2024-12-29 10:10:08