malloc函数问题
来源:百度知道 编辑:UC知道 时间:2024/06/14 01:11:48
请问 Stack S=malloc(sizeof *S)这样是分配一个多大的空间
其中的 "sizeof "和 "*"号 和" S"各有什么意义吗?
S→data=malloc(size*sizeof(StackItem)) 这又是什么意思?
我是初学,而且是自学,希望大家用比较好理解的话告诉我
其中的 "sizeof "和 "*"号 和" S"各有什么意义吗?
S→data=malloc(size*sizeof(StackItem)) 这又是什么意思?
我是初学,而且是自学,希望大家用比较好理解的话告诉我
void *malloc( size_t size ); malloc函数原型
sizeof为运算符 它的格式为 sizeof(里面为任意类型)
sizeof运算后的值为size_t类型
Stack S=malloc(sizeof *S);这里sizeof *S没见过
如果是这样就可以Stack *S=(Stack *)malloc(sizeof(Stack));
意思为申请了一Stack类型大小的内存空间,把首地赋给S
这样也可以long*S=(long*)malloc(sizeof(Stack *));
意思为申请了一Stack指针类型大小的内存空间,把首地赋给S
我们知道指针变量的大小都为4所以有sizeof(任意类型的指针)
它的值都为4,它的作用就是申请了4个字节大小的内存空间把它的
首地赋给long类型指针,其实就是动态创建了一long类型
其实在这里你只要知道malloc函数的作用和原型,理解这个就不困难
在来贴个仿malloc函数的活用
#include "stdafx.h"
#include "stdlib.h"
#include "string"
#include "stdio.h"
int main(int argc, char* argv[])
{
double d[80];//在这里我把这个只当做了80*8个字节的内存空间大小
double *t=d;
char *s=(char *)t;
strcpy(s,"11515615156156156165156");
640个字节大小空间来装这么小的字符串小菜一碟
printf