13.数据结构/宏、堆区申请和释放练习20240119

一、定义一个"简单宏"或宏函数,实现两个数交换。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#define EXCHGE(x,y) do{int t=x;x=y;y=t;}while(0) // 无需返回使用do while
#define EXCHANGE int t=c;c=d;d=t;          //直接代换 需与主函数变量名一致

int main(int argc, const char *argv[])
{
	int a=11,b=22;
	EXCHGE(a,b);
	printf("a=%d,b=%d\n",a,b);
	int c=33,d=44;
	EXCHANGE
	printf("c=%d,d=%d\n",c,d);


	return 0;
}

运行:

二、定义字符类型指针,指针指向n个连续堆区内存,输入,计算字符串长度

定义函数,实现内存申请;

定义函数,计算字符串长度;

定义函数释放内存。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
char *creat_e(int n);
int len_g(char *p);
char *fre_es(char *p);
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:\n");
	scanf("%d",&n);
	char *p=creat_e(n);          //定义函数申请堆区内存,返回地址使用p接收
	printf("please enter str:\n");
	scanf("%s",p);
	int len=len_g(p);      //定义函数计算输入字符串的长度,返回长度用len接收
	printf("strlen=%d\n",len);  
	p=fre_es(p);         //定义函数释放内存并返回地址NULL让p指向NULL
	return 0;
}
char *creat_e(int n)    //需要传参n确定申请多少内存 返回内存首地址
{
	char *p=(char *)malloc(sizeof(char)*n);
		return p;
}
int len_g(char *p)    //字符串只需要传参首地址 即可计算长度 返回长度
{
	int len=strlen(p);
	return len;
}
char *fre_es(char *p) //释放内存需要传递首地址,返回NULL
{
	if(NULL==p)   //可能申请失败 失败时指向malloc返回NULL  此时不需要再重置了
		return NULL;
	free(p);         //free释放堆区p指向地址的内存
	p=NULL;         //让自定义函数中的指针变量p指向NULL
	return p;     //返回NULL给主函数的指针变量p接收 使它也指向NULL
}

 运行:

思维导图:

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值