1.字符函数的判断(主要判断是不是那个字符,然后会有对应的返回值)
isalpha() 判断是不是字母
isdidigit()判断是不是数字
isalnum()判断字母和数字
isspace()判断空白字符(空格,换行,tab)
tolower()大写变小写
toupper()小写变大写
islower()判断是不是小写
isupper()判断是不是大写
2.4个字符串函数(看后缀分辨)
strcpy (cpy就是拷贝的意思)
strcmp (这个后缀是比较的意思)
strcat(cat相当于有一只猫在追,就是连续打印)
strtok用于提取char* strtok(charstr,const cahrsep)
charstrtok(arr1[],'@ . ')
前者是被分割的部分,后者是分割符集合
3.内存函数
memcpy:void mencpy(void* destination,const voidsource,size-t num);它可以拷贝任意类型数组 ,但是他是从前往后拷贝,遇到重合的就不可以了。
memmove:voidmemmove(void* destination,const void*source,size-t); :它如果遇到重合部分,就从后往前拷贝,如果不重合,就从前往后拷贝。
memset//这个是用来设置内部填充的
比如:int arr[]={1,2,3,4};
memset(arr,0,16)//相当于把arr的4个共占16byte的元素全部改成0
memcmp:对数组的各个byte位的地址进行比较,如果大于返回1,小于返回-1,等于返回0
这里对大端和小端有两种写法:
机器存储的时候是小端写法:01 00 00 00(是用这个比的)
但是我们人正常写是用大端:00 00 00 01这种情况
地址编号给计算机和我们自己看到的是反过来的,计算机给我们看和它自己存也是反过来的
4.有重合是想续打印
void* mommeove(arr1,arr2,20);这里是20个byte的意思,则拷贝5个int
if(dest<scr )
{
while(num–)
{
(char)dest=(cahr)src;
scr=(cahr*)scr+1;
dest=(char*)dest+1;//这两步是把源和目的地的位置都向后移,这样才找得到后面的数
}
}
else
{
dest=(char*)dest+num-1;//要加一个num,把他弄到最后一位
src=(cahr*)src+num-1;
while(num–)
{
(char)dest=(cahr)src;
scr=(cahr*)scr-1;
dest=(char*)dest-1;//这两步是把源和目的地的位置都向前移,这样才找得到前面的数
}
}//要明白,num是要拷贝的byte数量,如果要从后往前打印,就要更换初始位置,所以要加num;
思考一下:(char)dest:先看char* dest,这个是指针变量,简称指针(虽然它不是,但是大众口头是这样说的),那么它相当于房间号,外层的是取出房间里面的数。
然后char dest是首元素的地址。
5.大小端判断(百度笔试)
大端:一个数据低字节存到低位置,高字节存到高位置
小端:一个数据低字节存到高位置,高字节存到低位置
注意:数据的字节高低是从左到右来看的,位置的高低是从右到左来看的
01 00 00 00这个是小端
00 00 00 01这个是大端
int check_sky()
{
int a=1;
if((char)&a==1)
return 1;//小端
else
return 0;//大端
}
int main()
{
if(check_sky==1)
printf(“小端”);
else
printf(“大端”);
return 0;
}
6.关于进制数的整形提升(注意:整形提升都是的变换规则是对补码进行的,看他是否有符号,要看补码的最高位,不是看10进制里面存的数)
有符号位(signed char ,short)
看符号位,高位补符号位的值
例:如果最高位的数字是1,前面全部补1,但是如果前面是0,前面全部补0.
它们的目的:保证·扩大的位数后,十进制的值不变。
无符号(unsigned char/unsigned short)
不管前面存了什么,高位一律补0.
例子:char a=-1;
signed char a=-1;
unsigned char a=-1;
在计算机中:一律用补码计算
-1的源码是10000001
反码是 11111110
补码是11111111
所以如果是char ,signed char补到32位,前面全部补1
但是unsigned char a=-1就是00000000000000000000000011111111
那么前者就是-1,后者是255;
7.辨析
a 这个是房间里面装的东西
&a 这个是房间号
(char )&a 这个是拿到正确的房间号的钥匙,可以正确打开房间
(char)a 这个直接把房间里面的东西当成房间号,但是没有这个房间号,则会发生非法入侵
(char)&a 这个就是拿到正确的钥匙并且拿出东西
char (*arr1);这个是数组指针(是一个装着数组的指针变量)
char *arr1[];这个是指针数组(是一个装指针的内存空间)
本文系统讲解C语言标准库中常用字符判断函数(isalpha、isdigit等)、字符串操作函数(strcpy、strcmp、strcat、strtok)及内存操作函数(memcpy、memmove、memset、memcmp)的用法与区别;深入剖析整形提升规则(有符号/无符号补码扩展)、大小端存储判断方法,以及指针相关核心概念辨析(&a vs a、数组指针与指针数组)。内容紧扣C语言底层机制,适用于深入理解数据表示与内存操作。
362

被折叠的 条评论
为什么被折叠?



