前言:今天在做的题目之中 出现了一个十分有趣的现象 就是 使用memset中直接的问题。现在分享一下。
掉坑的题目 《1050 螺旋矩阵(25)(25 分)》
我们定义二维数组不过是三种方法
1.直接定义法 int P[100][100];
2.malloc定义法 int** P = (int **)malloc(sizeof(int *)*100); for(int i=0;i<100;i++) P[i]=(int *)malloc(sizeof(int)*100);
3.calloc 定义法 int** P = (int **)calloc(100,sizeof(int *)); for(int i=0;i<100;i++) P[i]=(int *)calloc(100,sizeof(int));
有的人说了 malloc不是大致和calloc相同吗? 但是有时候 一些细节就会让你 好久都没有办法查的出来。比如我今天所说的memset的超级大坑。
为了掉进我设下的这个坑 我们 使用方法 2 开辟了空间 创建了二维数组 。我们知道 使用malloc开辟的二维数组每一个元素的值就像在局部变量一样都是随机值。
这个时候 心大的同学就很想 使用 memset 来初始化这个“数组”了 在我们的印象里 我们初始化 使用 方法 1 定义的数组的时候都是这样的 (例如初始化为 0 ):memse