- 博客(6)
- 收藏
- 关注
原创 [C库函数]strcat的内部实现
strcat函数的功能就是在一个字符串后面追加上另外一个字符串。char * strcat ( char * destination, const char * source );char* strcat(char* destination, char* source ){int ret = destination;while (*destination){destination++;}while (*destination++ = *source ++){;}return re
2022-05-25 10:45:04
291
原创 [C库函数]memset的内部实现
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。void *memset(void *s, int c, size_t n);s指向要填充的内存块。c是要被设置的值。n是要被设置该值的字符数。返回类型是一个指向存储区s的指针。void *memset(void *s, int c, size_t n);{char *xs = s; while (count--) *xs++ = c; return s;}...
2022-05-24 20:55:53
809
原创 [C库函数]memcpy的内部实现
memcpy函数是C/C++语言中的一个用于内存复制的函数,声明在 string.h 中。其原型是:void *memcpy(void *destin, void *source, unsigned n);作用是:以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中。函数有三个参数,第一个是目标地址,第二个是源地址,第三个是数据长度。#include<stdio.h>void memcpy(void *dest, const void *s
2022-05-24 20:51:56
620
原创 C语言位运算
1、运算符(1)位与&,逻辑与&&;(2)位或|,逻辑或||;(3)位取反~;(4)逻辑非!逻辑操作:只有0(假)和 1(真);位操作:把数转化成二进制,每一位再进行与或非;异或:相同为0;不同为1;位与:与1位与无变化,与0位与为0;位或:与1位或为1,与0位或无变化比如:45 ^ 2345 : 10110123 : 01011145^23 = 0b111010 = 58;2、移位 左移位<< 右移位 >>(想象成开火车)对于
2022-05-24 18:57:10
246
原创 C语言内存对齐
为什么要进行内存对齐?如果不按照适合编译器要求的数据对齐,读写效率会受到影响。比如说32位编译器,int占用32位,char占用8位,如果char先存,一行就只剩下24位的空间大小,就存不下int型的32位,如果继续往下存的话就需要两个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该4个字节数据。例题一struct struct1{double dda;char cda;int ida;};sizeof(struct1) = 16;例题二//32位系统#include<
2022-05-24 18:32:39
343
原创 C语言sizeof和strlen的区别
主要区别如下:1、sizeof是运算符,strlen是C语言标准库函数。2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’ 。3、而sizeof 测量的是字符的分配大小,它的参数可以是数组、指针、类型、对象、函数等。具体而言,当参数分别如下时,sizeof返回的值含义如下:数组-编译时分配的数组空间大小;指针-存储该指针所用的空间大小;类型-该类型所占的空间的大小;对象-对象的实际占用空间大小;函数-函数返回类型所占空间的大小;例题1:char *s
2022-05-24 17:49:49
15861
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人