一.先拿一个例子来看一下
这是我在学习Dijstra算法时老师的程序中的一行代码:
memset(mp,INF,sizeof(mp))
解释参数:mp是一个数组;INF是一个int类型的数据,代表无穷大;
该行的目的:将数组mp中所有的元素都用无穷大填充
对这一行代码的详细解释:
也就是说:这个函数在这一行中实现的功能是从mp数组起始位置开始(注意这里直接传参mp,是因为直接传递数组名,就是直接传递数组的地址,从而memset函数内部得到的是一个指向mp数组开始位置处的指针),将mp这个数组占据的整个内存空间中的值,全部改值为INF
补充一点:本来函数memset()中的第三个参数应该是字符数(详见下面的文档截图),但是这里ChatGPT为何解释为字节数,是因为如下截图:
即一个字符就是占据一个字节,所以这两种说法都对
a
a
a
a
a
二.官方文档的解释:
我个人以为:参数 n 被解释为【要被设置为该值的 “ 字节数 ” 】更为准确
a
a
a
a
a
三.官方文档的例子:
解释:str这个数组本来已经被这句话“This is string.h library function”装满了前33个位置,但是通过函数memset()又将这个数组的前7个字符所在的内存空间,全部给用$符号覆盖了【因为函数memset的第一个参数传递了数组的首地址,从首地址开始的7个字符位全部被改值】