S1E33生存期和存储类型动动手1
想问下各位大佬代码第15行,将数组初始化为0,为什么可以这样写,这样写是什么意思,memset是什么?#include <stdio.h>
#include <string.h>
void createMatrix(int n);
void createMatrix(int n)
{
int i, j, oi, oj, num, max;
// 创建一个存放矩阵的二维数组
int matrix;
// 填充为0
max = n * n;
memset(matrix, 0, max * sizeof(int));
// 将1存放到第0行的中间位置
matrix = 1;
// 记录当前的行号和列号
i = 0;
j = n / 2;
for (num = 2; num <= max; num++)
{
// 记住当前位置
oi = i;
oj = j;
// 向右上角走一步
i = i - 1;
j = j + 1;
if (i < 0)
{
i = n - 1;
}
if (j > n - 1)
{
j = 0;
}
if (matrix != 0)
{
i = oi + 1;
j = oj;
}
matrix = num;
}
// 打印结果
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%2d ", matrix);
}
putchar('\n');
}
}
int main(void)
{
int n;
printf("请输入一个奇数:");
scanf("%d", &n);
while (!(n % 2) || n < 3)
{
printf("输入错误,必须是一个大于2的奇数!\n");
printf("请重新输入:");
scanf("%d", &n);
}
createMatrix(n);
return 0;
} 本帖最后由 jhq999 于 2021-11-7 17:20 编辑
memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
函数介绍
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度. jhq999 发表于 2021-11-7 17:18
memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新 ...
懂了,谢谢!
页:
[1]