#include<stdio.h>
struct student
{
int roll_no;
int mark;
struct student *p;
} ;
int main()
{
struct student *stu;
stu=malloc(sizeof(struct student));
}
malloc()
对于
结构类型?如何将其分配给
结构变量?
现在要声明,
Struct student *stu;
内存分配是这样的
roll_no: 1000 - 1004
mark: 1004 - 1008
p: 1008 - 1012
对于陈述
stu=malloc(sizeof(struct student));
我的假设如下
首先分配内存块
让我们说2000年-2012年
然后分配部分
2000 stored at 1000
2004 stored at 1004
2008 stored at 1008
这是malloc()
的分配部分的工作方式
和结构变量,或者还有其他
假设。
答案 0 :(得分:0)
malloc()
返回一个指向内存块(void *
)的指针,该指针足够大以容纳size
(第一个参数)字节,而不管该参数是什么还是强制转换了什么
例如,stu->roll_no
将访问分配的内存的前两个字节(假设int
是32位)(假定未填充结构)。
在C语言中,void *
指针被隐式转换为分配给它们的指针类型。
答案 1 :(得分:0)
如果我的理解中有任何错误,请进行更正,因此对于陈述,请构造学生* stu;为下一条语句stu = malloc(sizeof(struct student))分配4个字节的内存空间;分配了第一个内存块,假设分配了12个字节,并将该块的起始地址分配给stu。因此,如果我们说stu-> roll_no则不访问前4个字节,如果我们说stu-> marks则访问后4个字节。如果我们说stu-> p,则访问接下来的4个字节。并且为了清楚起见,与普通的结构变量将为struct学生分配12个字节而结构指针变量仅分配4个字节不同。
答案 2 :(得分:-1)
malloc返回void *指向您发送的内存中某个位置的指针,可以将其强制转换为要查看的任何-https://www.tutorialspoint.com/cprogramming/c_type_casting.htm类型,请参见malloc定义: https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm