![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 66
luobeihai
这个作者很懒,什么都没留下…
展开
-
C语言的位运算
位操作有逻辑运算和移位运算,如位与、位或、位取反、按位异或、移位等操作。位运算通常会和底层代码寄存器的操作结合在一起使用,比如想要让寄存器中的任意1位或者任意几位位设置为1,或者设置为0,从而实现对寄存器位的控制。原创 2023-05-21 01:45:26 · 4591 阅读 · 0 评论 -
关于C/C++中const关键字作用的一些想法
const 即是英文单词 constant 的缩写,常数、常量(在实际使用中,准确的说,应该是“只读”)的意思。在C语言中,const 用于修饰变量,那么程序员就是希望这个变量变为“常量”,但是这里加了引号,因为对于C语言来说,我们还是可以通过指针间接修改。原创 2022-09-03 17:48:20 · 1160 阅读 · 0 评论 -
不使用strcat函数,实现两个字符串连接
设计思路:1、首先我们要找到目标字符串的结尾,即 ‘\0’ 处2、然后我们再依次把源字符串依次添加到目标字符串的结尾即可实现源码如下:#include <stdio.h>/* 方法1:字符指针方式实现 */char *my_strcat1(char *dstStr, const char *srcStr){ char *tmp = dstStr; /* 找到目标字符串的结尾 */ while (*dstStr) dstStr++; /* dstSt原创 2022-04-07 22:08:21 · 13520 阅读 · 0 评论 -
C语言浮点数的讨论
1. 浮点数在内存中的存储方式浮点数在内存中的存储方式为:符号位、指数、尾数(小数)。具体如下表格:类型符号位指数尾数(小数)float1位(第31位)8位(第23~30位)23位(第0~22位)double1位(第63位)11位(第52~62位)52位(第0~51位)float和double都是浮点数类型,float占4字节内存,double占8字节内存,所以他们所能表示的数据范围和精度不一样而已。但是,它们在计算机内部的存储方式是完全一样的。另外,浮点原创 2021-09-04 22:43:53 · 501 阅读 · 0 评论 -
关于堆栈的讲解(我见过的最经典的)
1. 预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的转载 2021-08-26 11:12:44 · 600 阅读 · 0 评论 -
memcpy、memset、memmov等内存操作函数介绍及其源码实现
1. memset函数源码实现:void *memset(void *s, int c, size_t n){ char *xs = s; while (n--) *xs++ = c; return s;}功能:把 s所指向的某一块内存空间,使用字符c来进行填充,填充长度是n。该函数通常在我们申请一块新的内存时,用来清零;或者我们定义一个大的结构体、数组的时候,使用memset进行清零操作。参数:s: 要填充的内存首地址c: 该块内存要填充的值n: 要填充的长度返回值:原创 2021-08-15 11:08:43 · 2706 阅读 · 0 评论 -
C语言常见字符串操作函数介绍及其源码实现
1. strcpy函数源码实现:char *strcpy(char *dest, const char *src){ char *tmp = dest; while ((*dest++ = *src++) != '\0'); return tmp;}功能:把 src所指向的字符串复制到 dest参数:dest: 目标字符串首地址src: 源字符串首地址返回值:返回指向目标字符串的首地址(指针)注意事项:如果目标字符串dest长度小于源字符串src的长度,可能会造成原创 2021-08-14 17:05:26 · 1643 阅读 · 0 评论 -
整型数转换为字符串的itoa()函数C语言实现
1. itoa()函数介绍itoa()函数是c语言中的一个库函数,功能是把整型数转换为相应进制的字符串。但是我在linux下使用这个函数时,编译链接时找不到这个函数,查找资料才发现linux下并没有这个函数。于是就想着自己实现一个itoa()函数。该函数原型如下:char *itoa(int value, char *string, int radix);参数介绍:value: 相要转换的整型数string: 要输出的目标字符串的地址radix: 以什么进制转换为目标字符串,进制范围在2~原创 2021-08-08 14:06:25 · 5094 阅读 · 0 评论 -
编写一个函数实现字符串转换为整型数据
要求用c语言实现字符串转换位整型数据,如:字符串"-123456"转换为整型数据:-123456#include <stdio.h>int my_atoi(const char *str){ int value = 0; int flag = 1; /* 跳过负号 */ if (*str == '-') { flag = -1; // 标记为负数 str++; } /* 跳过正号 */ if (*str == '+') str++; /* 转换 *原创 2021-08-06 21:47:34 · 2774 阅读 · 0 评论 -
字符串的逆序
写一个函数实现字符串的逆序操作,比如字符串"123456789"经过逆序后,变成"987654321"。要求不能使用c库函数。代码如下:#include <stdio.h>#include <string.h>void reverse_string(char *str){ char ch; int i = 0; int len = strlen(str); for (i=0; i<len/2; i++) { ch = str[i]; str[原创 2021-08-05 22:01:25 · 1414 阅读 · 0 评论 -
使用链表存储学生的学号和成绩,并按分数从低到高排序
目录一、背景介绍二、题目分析三、代码实现一、背景介绍最近遇到一道面试题,要求使用链表来存储学生的相关信息,并且按照分数从低到高排序。题目细节如下:写一个程序,用来存储学生的学号和成绩,并按分数从低到高排序。请使用链表实现。例如用户输入:1,90<回车>、2,100<回车>、3,80<回车>、OK<回车>。输出则是:3=80<换行>、1=90<换行>、2=100<换行>说明:OK表示录入学生学.原创 2021-05-12 21:33:26 · 10656 阅读 · 5 评论