深刻体会一次堆内存和栈内存的区别

本文介绍了一个使用C语言实现的随机ID生成器,该生成器能够生成包含字母和数字的12位固定长度ID,其中包含了年份和序号等信息。通过随机数生成算法,确保了每次生成的ID的独特性和随机性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我的程序

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<time.h>

//字母
char w[5] = {'A','B','C','D','E'};

//年份  
//	20200	306  
//	20200	106
int baseY = 20200;   //前部分相同
int maxY = 306;		// 306-106=200  rand()%200+106   106-306
int minY = 106;

//序号
int mimN = 1;
int maxN = 999;

//随机生成一个字母
char randomW() {
	return w[rand() % 5];
}

//随机生成一个年份
int randomY() {
	return  rand() % 200 + 106;
}

//随机生成一个序号
int randomN() {
	return  rand() % 1000;
}

char id[12];//体会一下堆内存和占内存的区别  
//随机生成一个ID   长度固定是12位			A 2019 2020 001
char* randID() {
	
	id[0] = randomW();

	//bask	20200
	id[1] = (char)2+48;
	id[2] = (char)0 + 48;
	id[3] = (char)2 + 48;
	id[4] = (char)0 + 48;
	id[5] = (char)0 + 48;

	int y = randomY();
	id[6] = (char)(y / 100 + 48);
	id[7] = (char)(y / 10 % 10 + 48);
	id[8] = (char)((y % 10) + 48);

	int n = randomN();//106
	id[9] = (char)(n / 100 + 48);
	id[10] = (char)(n / 10 % 10 + 48);
	id[11] = (char)((n % 10) + 48);

	return id;
}

char* ans;//体会一下堆内存和占内存的区别

int main() {
	srand((unsigned)time(NULL));//时间种子,用于生成随机数

	for (int i = 0; i < 100; i++)
	{
		ans = randID();
		printf("%s\n", ans);
	}
	
	int r = getchar();
	return 0;
}

char id[12];//体会一下堆内存和占内存的区别 若放在函数randID里面使其成为局部变量 和
char* ans;//体会一下堆内存和占内存的区别 也放在函数里面,自私琢磨

烫烫烫烫等着你细细品味

感谢这位大佬的文章让我又认识了一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值