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

这是我的程序

#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;//体会一下堆内存和占内存的区别 也放在函数里面,自私琢磨

烫烫烫烫等着你细细品味

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

发布了89 篇原创文章 · 获赞 13 · 访问量 7705

猜你喜欢

转载自blog.csdn.net/printf123scanf/article/details/103866328