文章目录
一、memset
1.函数形式
void *memset( void *dest, int c, size_t count );
1.1解析
返回值:空指针
参数:
void*dest-----返回目的的的值(描述对象),即要被修改的值
int c-------设立的字符,即要修改替代的字符
size_t count--------修改替代字符的个数,即替代几个
2.头文件
#include <menory.h>或#include <string.h>
3.作用(使用场景)
如果我要修改一串数值,但我只想让它按照我希望的样子,只改变几个数,这种局部拷贝数值的时候,就用memset
4.举例
4.1 修改"hello world"变成"***** world"
#include <stdio.h>
int main()
{
char arr[] = "hello world";
memset(arr, '*', 5);
printf("%s", arr);
return 0;
}
注意点:
1、因为arr是要打印一串的,所以要用%s,以字符串的形式打印,如果用%d,那么就会打印一串数字,其原理是因为【字符的存储是以ASCII值进行的】
2、memst的返回值是一个空指针,如果我们想要显示被这个数值被修改之后的情况时,打印出实参1就行了,毕竟修改的对象就是实参1
4.2 实参2如果我用的是字符串的形式怎么办
#include <stdio.h>
int main()
{
char arr[] = "hello world";
memset(arr, "*", 5);
printf("%s", arr);
return 0;
}
结论:替代的部分会统一由0替代
二、sqrt
1.函数形式
double sqrt( double x );
含义:传进去一个double类型的数,返回一个double类型
ps.如果返回类型或者参数写成了int,也没有什么问题,详情见4.2
返回值:x的平方根
2.头文件
#include <math.h>
3.作用
计算平方根
4.举例
4.1计算45.3的平方根
//计算45.3的平方根
#include <stdio.h>
#include <math.h>
int main()
{
double ret = sqrt(45.3);
printf("%.2lf %.2lf", sqrt(45.3),ret);
return 0;
}
4.2 如果我实参传进去int类型的怎么办(甚至返回类型都写错)
//计算16的平方根
#include <stdio.h>
#include <math.h>
int main()
{
int ret = sqrt(16);
printf("%d",ret);
return 0;
}
结论
sqrt用int作为返回类型或者是实参都是没有问题的,这边的原理是隐性类型转化
4.2.1隐性类型转化
c语言的一个语法规则 就是当两个数据类型不一样 会自动转成一样的进行计算
这个例子中,我传进去了16,因为sqrt接收的要是double类型,所以里面的计算实际是以16.0进行计算的,根据sqrt函数的形式,返回的是double类型即4.0,但是因为这边是用int来接收的,所以就转换成了所期望的整型,也就是4