C语言复习
1.进制
三要素:数位(第几位) 基数 位权(当前位对应的值)
二进制:B 八进制:O 十进制:D 十六进制:X
0和1 111 /072 10 1111 1111/0xFF
正数的原码=反码=补码
负数的反码=原码取反 补码=反码+1
无符号整数补码举例:
假设使用8位表示无符号整数,计算无符号整数5的补码。
-
确定位数:n=8n=8。
-
计算补码:
28−5=256−5=25128−5=256−5=251 -
二进制表示:
-
5的二进制:00000101
-
251的二进制:11111011
-
左移<< 低位补0,不需要考虑补码
右移>> 无符号数:高位补0 负数需要知道其补码表示
有符号数:高位补符号位(正补0,负补1)负数需要知道其补码表示
负数需要补码参与运算
2. ASCII 码 0~127
NULL \0 的ASCII码都是0
\n的ASCII码是10
A的ASCII码是65 a的ASCII码是97
0 '0' 的ASCII码是48
回车的ASCII码是13
3.关键字
3.1存储类型:auto static extern register
面试题:static关键字的特点
1.作用域:static修饰的变量或者函数只能在本文件使用,不能被外部文件引用。
2.生命周期延长:局部变量:生命周期从函数调用开始到程序结束
全局变量:生命周期从程序运行到程序结束
3.存储位置:静态区
4.初始化:static修饰的变量未赋初始值,自动初始化为0,只初始化一次
面试题:如何引用一个其他文件的全局变量
头文件 extern int a;//声明
.c文件 int a=10;//定义
其他文件之间调用a变量
3.2 数据类型
char,short,int,float,double,long,signed,unsigned,
注意:short和long不能搭配,互斥
取值范围:一个字节占8bit
char -2^7~2^7-1
int -2^31~2^31-1
unsigned char: 0~2^8-1 0~255
3.3 构造数据类型
struct union enum
大小:struct 最大成员类型的整数倍
union 最大成员的大小
例题:
union {int x;char a;
} u;u.x = 10;
printf("%c\n", u.a);
x和a共用一块内存 x占4字节 a占其中低地址1字节
10的二进制为00000000 00000000 00000000 00001010
因此a的ASCII码为10 对应字符\n
3.4控制语句:
if,else,for,while,do..while,break,continue,return
3.5 其他
sizeof,strlen,constmvolatile,typedef,void
面试题:sizeof和strlen的区别
sizeof用来计算数组,结构体等的大小,包含\0
strlen用来计算字符串的长度,不包含\0
面试题:const的特点
const修饰的变量不能修改,常量化
const修饰的变量必须初始化
C++中const修饰的函数为常成员函数,保护成员不被修改
C++中形参const修饰用于保护成员不被修改
C++中const修饰对象表示常对象,只能访问常成员函数
int const *a 指向可以变,指向的内容不可以变
const int * a 指向可以变,指向的内容不可以变
int *const a 指向不能变,指向的内容可以变
const int *const a 指向不可以变,指向的内容不可以变
面试题:typedef和define的区别
typedef是重定义,可以将复杂的名字简单化
define是宏定义关键字,用于宏替换,通常表达式需要加()
4.标识符
命名规则:由字母数字下划线组成,不能以数字开头,不能和关键字重复
5.运算符:
1.关系
2.算数
3.位
笔试题:将一个数的某一位置1或清零,写出表达式.
数a 需要设置的位置n
置1 a = a | (1<<n)
置0 a = a & (~(1<<n))
4.逻辑
5.三目
6.赋值
7.逗号
8.自增自减
6.输入输出语句
1.scanf("%d",&a) printf("%d",a)
2.int a;a = getchar() char b; putchar(b) while(getchar()!=10);吸收回车,读取直到碰到回车,输入缓冲区全部丢弃
3.gets(name) puts(name)
7.for循环笔试题
笔试题:打印水仙花数100~999
int a,b,c;
for(int i=100;i<1000;i++)
{a=i%10;b=i/10%10;c=i/100;if((int)(pow(a,3)+pow(b,3)+pow(c,3))==i)//if(a*a*a+b*b*b+c*c*c==i){printf("%d是水仙花数\n",i);}
}
笔试题:打印99乘法表
for(int i=1;i<10;i++)
{for(int j=1;j<=i;j++){printf("%d * %d = %-2d ",i,j,i*j);}printf("\n");
}
笔试题:打印图案
*
**
***
****
*****
for(int i=1;i<6;i++)
{for(int j=1;j<=i;j++){printf("*”);}printf("\n");
}
8.while循环
while(!E); !E等价于 E==0
9.数组
什么是一维数组:相同数据类型元素的集合
什么是二维数组:数组的数组,每个元素是一维数组 行可以省略 列不能省略
内存连续存储
10.排序算法
1.冒泡排序:两两比较,满足条件交互
int temp;
for(int i=1;i<length;i++)
{for(int j=0;j<length-i;j++){if(arr[j]<arr[j+1}){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}
}
2.选择排序:每次从未排序的部分与已排序的最后一个比较,选择最大或者最小元素,返回下标,放在已排序的后面
for(int i=0;i<length-1;i++)//已排序
{int index=i;int temp;for(int j=i+1;j<length;j++)//未排序{if(arr[j]<arr[index]){index=j;}}if(index!=i){temp = arr[index];arr[index]=arr[i];arr[i] =temp;}
}
笔试题:打印斐波那契数列前15个数
int arr[15]={1,1};
for(int i=2;i<15;i++)
{arr[i]=arr[i-1]+arr[i-2];
}
for(int i=0;i<15;i++)
{printf("%d ",arr[i]);
}
printf("\n");
笔试题:杨辉三角前十行
int arr[10][10];
for(int i=0;i<10;i++)
{arr[i][0]=1;arr[i][i]=1;for(int j=1;j<i;j++){arr[i][j]=arr[i-1][j]+arr[i-1][j-1];}
}for(int i=0;i<10;i++)
{for(int j=0;j<=i;j++){printf(" %d ",arr[i][j]);if(i==j){printf("\n");} }
}
11.数组清零函数
1.bzero(buff,sizeof(buff))
2.memset(buff,0,sizeof(buff))
12.指针
面试题:说一说对指针的理解
指针分为一级指针,二级指针,多级指针,常用的是一级指针和二级指针。
一级指针就是指向变量的指针,存放变量的地址。二级指针就是指向一级指针的指针,存放一级指针的地址。
指针不初始化就是野指针,对野指针进行访问或者操作会出现段错误。
对指针进行解引用获取指针存放地址对应的值
面试题:指针和数组的区别
指针指向的内存地址可以是不连续的,数组的内存地址是连续的。
指针需要动态分配内存,数组内存是静态分配的。
指针分配的空间需要手动释放,数组的内存系统会自动释放。
指针取值需要解引用,数组取值用数组名[index]
指针的大小是4或者8字节,数组大小由数据类型和元素个数决定。
指针数组:int *p[3]={&a,&b,&c}
数组指针:int (*p)[3]=arr arr为数组
面试题:指针数组和数组指针的区别
指针数组本质上是一个数组 *p[3], 数组中每个元素都是指针
数组指针本质上是指针,(*p)[3],()可以理解为强调它是指针,指向一维数组时,(*p)[0]代表第一个元素的值,指向二维数组时,p[0][0]代表第一个元素的值.
13.函数
值传递:void fun(int a,int b) fun(a,b) a,b不会改变
地址传递 void fun(int *a,int *b) fun(&a,&b) a,b会改变
引用传递 void fun(int &a,int &b) fun(a,b) a,b会改变
14.string函数族
写出strlen、strcpy、strcat源码实现
int strlen(const char* buff)
{int count=0;while(*buff){count++;buff++;}return count;
}char* strcpy(char* str,const char* buff)
{if (str == NULL || buff == NULL)// 检查空指针{ return;}char *temp=str;while(*buff){*str=*buff;str++;buff++;}*str='\0';return temp;
}char *strcat(char* str,const char* buff)
{if (str == NULL || buff == NULL)// 检查空指针{ return;}while(*str){str++;}while(*buff){*str=*buff;str++;buff++;}*str='\0';return temp;
}
相关文章:
C语言复习
1.进制 三要素:数位(第几位) 基数 位权(当前位对应的值) 二进制:B 八进制:O 十进制:D 十六进制:X 0和1 111 /072 10 …...
Qt监控系统辅屏预览/可以同时打开4个屏幕预览/支持5x64通道预览/onvif和rtsp接入/性能好
一、前言说明 在监控系统中,一般主界面肯定带了多个通道比如16/64通道的画面预览,随着电脑性能的增强和多屏幕的发展,再加上现在监控摄像头数量的增加,越来越多的用户希望在不同的屏幕预览不同的实时画面,一个办法是打…...
ubuntu22安装issac gym记录
整体参考:https://blog.csdn.net/Yakusha/article/details/144306858 安装完成后的整体版本信息 ubuntu:22.04内核:6.8.0-51-generic显卡:NVIDIA GeForce RTX 3050 OEM显卡驱动:535.216.03cuda:12.2cudnn&…...
IDEA工具下载、配置和Tomcat配置
1. IDEA工具下载、配置 1.1. IDEA工具下载 1.1.1. 下载方式一 官方地址下载 1.1.2. 下载方式二 官方地址下载:https://www.jetbrains.com/idea/ 1.1.3. 注册账户 官网地址:https://account.jetbrains.com/login 1.1.4. JetBrains官方账号注册…...
Three.js实战项目02:vue3+three.js实现汽车展厅项目
文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…...
动态规划——斜率优化DP
题目清单 acwing300.任务安排1 状态表示f[i]: 集合:完成前i个任务且第i个任务为最后一个批次最后一个任务的方案。 属性:min 状态计算: f [ i ] m i n { f [ j ] s u m t [ i ] ∑ j 1 i w [ u ] s ∑ j 1 n w [ i ] } f[i]min\{f[j…...
【深度之眼cs231n第七期】笔记(三十一)
目录 强化学习什么是强化学习?马尔可夫决策过程(MDP)Q-learning策略梯度SOTA深度强化学习 还剩一点小尾巴,还是把它写完吧。(距离我写下前面那行字又过了好几个月了【咸鱼本鱼】)(汗颜ÿ…...
【云安全】云原生-K8S-简介
K8S简介 Kubernetes(简称K8S)是一种开源的容器编排平台,用于管理容器化应用的部署、扩展和运维。它由Google于2014年开源并交给CNCF(Cloud Native Computing Foundation)维护。K8S通过提供自动化、灵活的功能…...
SpringBoot中Excel表的导入、导出功能的实现
文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…...
Spark入门(Python)
目录 一、安装Spark 二、Spark基本操作 一、安装Spark pip3 install pyspark 二、Spark基本操作 # 导入spark的SparkContext,SparkConf模块 from pyspark import SparkContext, SparkConf # 导入os模块 import os # 设置PYSPARK的python环境 os.environ[PYSPARK_PYTHON] &…...
Daemon进程创建过程
Daemon创建过程: 1、fork,创建子进程。退出父进程。 2、setsid,创建新会话。脱离原会话、进程组、控制终端。 再次fork,与终端完全脱离。第二次fork的意义???? 先脱离原父进程&#…...
在sortablejs的拖拽排序情况下阻止input拖拽事件
如题 问题 在vue3的elementPlus的table中,通过sortablejs添加了行拖拽功能,但是在行内会有输入框,此时拖拽输入框会触发sortablejs的拖拽功能 解决 基于这个现象,我怀疑是由于拖拽事件未绑定而冒泡到后面的行上从而导致的拖拽…...
C++初阶—string类
第一章:为什么要学习string类 1.1 C语言中的字符串 C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想&…...
C# 提取PDF表单数据
目录 使用工具 C# 提取多个PDF表单域的数据 C# 提取特定PDF表单域的数据 PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景。凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用。然而,当需要整合…...
算法刷题Day28:BM66 最长公共子串
题目链接,点击跳转 题目描述: 解题思路: 方法一:暴力枚举 遍历str1的每个字符x,并在str2中寻找以相同元素x为起始的最长字符串。记录最长的公共子串及其长度。 代码实现: def LCS(self, str1: str, st…...
论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?
论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision? 1 背景2 创新点3 方法4 模块4.1 Mamba适合什么任务4.2 视觉识别任务是否有很长的序列4.3 视觉任务是否需要因果token混合模式4.4 关于Mamba对于视觉的必要性假设 5 效果 论文:https://arxi…...
HarmonyOS:ForEach:循环渲染
一、前言 ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为List组件。 API参数说明见:ForEa…...
Python3 【函数】项目实战:5 个新颖的学习案例
Python3 【函数】项目实战:5 个新颖的学习案例 本文包含5编程学习案例,具体项目如下: 简易聊天机器人待办事项提醒器密码生成器简易文本分析工具简易文件加密解密工具 项目 1:简易聊天机器人 功能描述: 实现一个简易…...
XSS 漏洞全面解析:原理、危害与防范
目录 前言编辑 漏洞原理 XSS 漏洞的危害 检测 XSS 漏洞的方法 防范 XSS 漏洞的措施 前言 在网络安全的复杂版图中,XSS 漏洞,即跨站脚本攻击(Cross - Site Scripting),是一类极为普遍且威胁巨大的安全隐患。随着互…...
从 GShard 到 DeepSeek-V3:回顾 MoE 大模型负载均衡策略演进
作者:小天狼星不来客 原文:https://zhuanlan.zhihu.com/p/19117825360 故事要从 GShard 说起——当时,人们意识到拥有数十亿甚至数万亿参数的模型可以通过某种形式的“稀疏化(sparsified)”来在保持高精度的同时加速训…...
从草图到逼真人脸:Qwen-Image-Edit-F2P结合ControlNet的进阶玩法展示
从草图到逼真人脸:Qwen-Image-Edit-F2P结合ControlNet的进阶玩法展示 最近在玩AI图像生成的朋友,可能都遇到过这样的烦恼:想让AI画一张特定角度、特定表情的人脸,光靠文字描述,结果总是像开盲盒。你说“一个微笑的东方…...
Phi-3-mini-4k-instruct-gguf一文详解:GGUF格式优势与Phi-3系列轻量设计哲学
Phi-3-mini-4k-instruct-gguf一文详解:GGUF格式优势与Phi-3系列轻量设计哲学 1. 认识Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型,采用GGUF格式封装。这个模型特别适合处理问答、文本改写、摘要整…...
CPython AOT编译器模块全图谱,从_pycompile.c到aot_codegen.cc的17个关键函数逐行注释与性能拐点分析
第一章:CPython AOT编译器模块全图谱概览与演进脉络CPython 的 Ahead-of-Time(AOT)编译能力并非原生内建,而是近年来通过社区驱动的实验性项目逐步构建起模块化支撑体系。其核心演进路径始于 PEP 698 提出的字节码预编译增强机制&…...
OpenClaw技能市场:10个适配Qwen2.5-VL-7B的实用自动化模块
OpenClaw技能市场:10个适配Qwen2.5-VL-7B的实用自动化模块 1. 为什么需要为Qwen2.5-VL-7B定制技能? 当我第一次在本地部署Qwen2.5-VL-7B这个多模态模型时,最让我惊喜的是它对图像和文本的联合理解能力。但很快我发现一个问题:模…...
Qwen3.5-2B边缘部署教程:ARM架构服务器上运行多模态模型详细步骤
Qwen3.5-2B边缘部署教程:ARM架构服务器上运行多模态模型详细步骤 1. 引言 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这款模型主打低功耗、低门槛部署,特别适配端侧和边…...
BG3 Mod Manager:智能模组管理工具让博德之门3模组体验升级
BG3 Mod Manager:智能模组管理工具让博德之门3模组体验升级 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 博德之门3作为一款备受欢迎的…...
Ostrakon-VL 模型推理加速实战:使用 .accelerate 库优化扫描速度
Ostrakon-VL 模型推理加速实战:使用 .accelerate 库优化扫描速度 1. 效果惊艳的开场 最近在测试Ostrakon-VL模型时,我发现了一个令人惊喜的事实:通过.accelerate库的几项简单优化,模型推理速度可以提升3倍以上,同时显…...
杨立昆新模型杀疯了,1500万参数单GPU就能碾压大厂?
就在前几天,AI教父、图灵奖得主杨立昆刚发了个新模型,名叫LeWorldModel,论文一发出,整个圈子瞬间炸锅。说出来你们可能都不信——这货只有1500万参数,单块GPU几个小时就能训完,随便一个研究者都拉起来跑一遍…...
OpenClaw API配置失败?3步快速修复,免费额度高效利用
OpenClaw API配置失败?3步快速修复,免费额度高效利用引言 OpenClaw作为新一代数据采集平台,其API凭借高效稳定的特性已成为开发者首选的工具之一。但在实际接入过程中,配置失败问题频发,尤其对免费额度用户造成严重困扰…...
从LVGL V7.11到V9.1:我维护中文文档这三年踩过的坑与实战经验
从LVGL V7.11到V9.1:一个中文文档维护者的技术叙事 三年前,当我第一次在嵌入式项目中尝试使用LVGL时,完全没想到这个轻量级图形库会成为我技术生涯中的重要篇章。作为国内最早系统维护LVGL中文文档的开发者之一,这段跨越三个大版本…...
