(int *)malloc(n*sizeof(int)),请问返回值的指针指向哪?

1、 struct st * t = (struct st *)malloc(n*sizeof(struct st)), 返回值是结构体首字节的指针,请问首字节是什么意思? 是第一个结构体内的第一个变量的第一个字节的地址吗? 假设此结构体内有3个变量,那么此结构体的地址是什么呢? 2、 malloc返回值... 1、 struct st * t = (struct st *)malloc(n*sizeof(struct st)), 返回值是结构体首字节的指针,请问首字节是什么意思? 是第一个结构体内的第一个变量的第一个字节的地址吗? 假设此结构体内有3个变量,那么此结构体的地址是什么呢? 2、 malloc返回值是指针变量,如果强制转换成int型,例如int i = (int)malloc(sizeof(int)) 左边是int型变量,所占4个字节,右边是int型变量首字节的地址转换成int型,能划等号吗? 请大神赐教,谢谢! 展开

第1个回答  2019-10-16
您好,第一个*是与int
合在一起,表示int
型的指针
第二个*是乘号,malloc的参数是要申请的内存的大小,sizeof(int)
*
n
或者
n*sizeof(int)的意思都是一样的,这句话的意思是
,sizeof(int)=4,所以这句话的意思是申请一块
4*n
字节的内存空间,
这句话一般是用来申请动态int型数组的。
函数
只负责
申请
内存,就像
村里
的土地一样,那是一大块
,我们需要
给他来分配,一般是按
块来进行划分,你种这一块地,我种那一块地。内存也是这样,MALLOC
可以帮你申请这样一块地,但是你怎么来用它,怎么划分它,,就需要到
强制类型转换,这里
的(INT
*)
就是把这一大块地
进行规划,后面的是
一个SIZE_T
类型的
变量,就是
MALLOC
要申请的内存的大小,内存的基本单位

B
也就是字节
,这里
写的
N*SIZEOF(INT)
就是
申请
4*N

字节的意思。
相似回答