扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
char* pc=(char*)malloc(10);
创新互联是一家专注于网站设计制作、成都做网站与策划设计,咸丰网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:咸丰等地区。咸丰做网站价格咨询:13518219792
在内存中申请10个char大小的存储空间,并将存储空间的首地址放于变量pc中。
记得不要忘记类型转换。
在纯粹C编译器下,用new作函数名是可以的,但在与C++兼容的编译器下,是不可能通过编译的,因为new是C++的申请内存操作符,属保留字,不能由用户用作标识符。这里将new改为mynew,举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char *mynew(int n){
char *p;
if(p=(char *)malloc(n))
return p;
else return NULL;
}
int main(void){
char *p=mynew(20);//申请20个连续字节空间
if(p){//若申请成功
strcpy(p,"1234567890");//向申请的空间写入字符串
printf("%s\n",p);//打出来看看
free(p);//释放申请的空间
}
else printf("Application memory failure...\n");
return 0;
}
在内存上有三个区域可以用来保存数据,一个是栈区、一个是堆区、一个是静态区,一般常用的定义变量是在栈区开辟,特点是系统开辟和释放;堆区的空间是由使用者来开辟空间,所以需要借助malloc开辟空间,free释放空间。p=(char *)malloc(sizeof(char)*20);malloc函数申请空间,sizeof(char) * 20表示malloc开辟空间字节数为20字节,malloc前的char * 表示开辟空间进行强制类型转换为需要开辟的空间的数据类型。free(p)函数表示释放由使用者开辟的空间,因为空间开辟是手动调用函数开辟的空间,所以释放空间也需要调用函数开辟。
#includestdio.h
#includestdlib.h
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
LinkList Init()
{
LinkList L = NULL;
printf("%d ",L);
L=(LinkList)malloc(sizeof(Lnode));
printf("%d ",L);
L-next=0;
return L;
}
void main()
{
LinkList A = NULL;
printf("%d ",A);
A = Init();
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流