当前位置: 首页 > news >正文

C语言简单笔记

一:格式控制符:

整数:short、int、long、long long 格式控制符%hd %d %ld %lld

实型(带小数点):float、double 格式控制符%f %lf

字符:char

格式控制符:%c是字符(''),%s是字符串("")


二:常用函数

<stdio.h>

printf():将数据输出到屏幕上

scanf():读取键盘输入的数据,&

const:定义只读变量=const int number=10;

<time.h>

time():获取当前时间

<stdlib.h>

srand():设置随机数生成器的种子

rand():生成一个随机数(如果种子srand不设置,则每次生成同一个数)


三:基础知识

float 输入:&f 输出:%f或%e

double 输入:&lf 输出:%f或%e

eg:1E-10 E:1.0000E-10 f:0.000000(表示1*10^-10)

sizeof:求所占数据大小,单位

计算机内二进制数字是闭环的, 1→127,127+1=-128,-128→0

二进制表示负是 将该数取反后加1 eg:-5=0000 0101取反1111 1010+1=1111 1011=-5

printf输出inf,表示超过范围的浮点数:±∞

printf输出nan,表示不存在的浮点数

浮点数带 f 表示他是浮点数,否则是double

a=1.234 表示是float

整数没特殊需要建议用int;浮点数则是double

④字符类型

char c;

scanf("%c",&c); 1

printf("%d",c); 49

printf("%c",c); '1' 对应ASCLL的编码是 49

⑤逃逸字符

\b回退一格 \t到下一个表格位

\n换到下一行 \r回车

\"双引号 \'单引号

\\反斜杠本身

⑥类型转换

当运算符两边出现不一致的类型时,会自动转换成较大的类型

char→short→int→long→long long

int→float→double

对于printf(),任何小于int的类型会被转化成int,float会被转化成double

scanf不回,要输入short时,需要%hd

⑦布尔类型 bool

#inclde<stdbool.h>

之后可以使用 bool、true、false

boo b=true(6>5)

b=2;

printf(“b=%d\n”,b); b=1

⑧逻辑运算符

与: && 或 : || 非 : !

优先级:!>&&>||

关系运算符>逻辑运算符

⑨条件运算符

优先级高于赋值运算符,低于其他

count=(count>20)?count-10:count+10

成立:count-10 不成立:count+10

⑩逗号运算符

优先级最低

eg:i=3+4,5+6 i=7

i=(3+6,5+6) i=11


函数:

1.定义函数:

void sum(int begin,int end)//定义sum
{
int f1=0;
int sum=0;
for(f1=begin; f1<=end; f1++)
{
sum+=f1;

}
printf("%d到%d的和是%d",begin,end,sum);

}

int main()
{
sum(1,10);//调用定义的函数sum
return 0;
}

2.返回值

return停止函数执行,将值送回

return;

return 表达式;

void函数不能使用带值的return,也可以没有return。

如果函数有返回值,必须用return。

3.函数声明

提前告诉编译器函数的类型,后面定义的时候可以放在main后面

void sum(int ,int );//声明 函数原型。可以写入 a,b也可以不写入

int main()

{}

void sum(int a,int b)//定义

{}

4.传递函数

当调用函数时,给的值与参数值不匹配时,编译器会自动转换类型,很可能造成不是期望值。

调用函数时,永远只能传递值给函数。

void swap(int a,int b)

{

int t=b;

b=a;

a=t;

}

int main()

{int a=5;

int b=6;

swap (a,b);

printf("%d %d",a,b); 依旧是5 6,不会发生改变, ,调用函数只传递值,不做 其他事

}

5.数组

类型➕数组名称➕[]

数组初始化:

int count[10]={0};//全部设置为0

6.&运算符

①获取变量地址,它的操作数必须是变量

printf("%p",&i) %p输出地址

7.格式符:

整型:%d, %ld, %lld %u(十进制无符号整数) %lu

浮点型:%f %lf

十六进制%x 无符号八进制:%o

字符:%c 字符串:%s

地址/指针:%p

指针

指针变量的值是具有实际值的变量的地址

int *p=&i p是指针变量,*表示类型

*是一个单目运算符,用来访问指针的值所表示的地址上的变量

定义了*p后,后续调用

P:代表指针本身(即地址)p(ac[0]); p+1(ac[1]); p++(ac[2])

*p:代表指针指向的值的本身*p=&i; *p=ac[0]

遍历:

While(*p)

{p++;}

//const在前只改指向,*在前只改值


//const在*前, 可以改变指针指向,不能通过指针修改值
//eg *p1=26

int a=10,b=20;
int const*p=&a;

//*p = 30 不能通过
p=&b;//p=20



// *在const前 不能修改指针指向,但可以通过指针修改值

int *const q=&a;

*q=30;
// q = &b 不能通过



//int a[]={0,1,2,3,4,5,6,7,8,9,}
//int *p=a;
//*(p+1)=a[1];

指针计算:

给一个指针加、减(+,+=,-,-=)

递增递减(--)

两个指针相减

· malloc:向系统申请一块指定大小的内存,返回这块内存的地址(若失败则返回 NULL)。

· free:将 malloc 申请的内存归还给系统,避免内存泄漏。

malloc借空间

free 还空间

字符串

  1. \0:标志字符串结束

char str[5]={‘H’, ’e’, ’l’ ,’l’, ’o’}; printf: 输出乱码,会继续打印,直到碰到随机的0

char str[5]={‘H’, ’e’, ’l’ ,’l’, ’o’, ‘/0’}; printf: Hello

  1. 存放

创建、储存、修改字符串→数组

遍历、查找、传递、操作字符串→指针

传递函数(指针):

动态内存分配:

  1. scanf安全输入

scanf(“%7s”,word) s前加有效个数

  1. 字符串数组

char **a: a是一个指针,指向另外一个指针,另外一个指针指向一个字符(串)

char a[][]: 第一个[]是数组个数 第二个[]是每个数组长度

char *a[]: 代表指针数组

  1. putchar(int c):向标准输出写一个字符,返回洗了几个字符,EOF(-1)表示失败

Getchar(int):从标准输入读入一个字符,返回类型是int,是为了返回EOF(-1)

强制程序结束:Ctrl—C

发送EOF,表示输入结束:

Windows→Ctrl-Z

Unix→Ctrl-D

  1. include<string.h>

strlen: size_t strlen(const char *s) 返回s的字符串长度(不包括结尾的0)

strcmp: int strcmp(const char *s1,const char *s2);比较两个字符串,返回0、1或-1

(== ; > ; <)

strcpy: char *strcpy(restric dst, const char *restric src); 把src的字符拷贝到dst。

restric表明src和dst不重叠。 返回dst,为了能链起代码来。

strchr: char *strchr(const char *s, int c); 字符串中找字符;(从左边开始找)

寻找c第一次出现的位置

返回值NULL表示没找到

strrchr:char *strrchr(const char *s,int c); 从右边开始找

strstr:char *strstr(const char *s1,const char *s2); 字符串中找字符串

strcasestr:char *strcasestr(const char *s1,const char *s2); 忽略大小写

fgets: char *fgets(char *str,int size, FILE *stream); fgets(in,3,stdin);

in:存放地址

3:长度

stdin:表示键盘输入

strcspn:strcspn(const char *str,const char *reject);返回第一个匹配到的字符的索引

eg: char str[] = “hello world”

Int pos = strcspn(str,” ”);

printf(“%d”,pos); 输出为5,因为” ”第五位后是空格

  1. include<stdlib.h>

malloc: p = (int *)malloc(sizeof(int)); 用于在程序运行时,动态分配内存,与

Int a[]这种固定大小的数组不同,

malloc可以在运行时根据实际需求来决定分配多少内存

需要释放内存 free(p)

(int *):强制类型转换,把返回值地址改成int *

malloc ( ):向系统申请一块内存,多少自己填

sizeof(int):计算int类型占多少字节

枚举

  1. enum 枚举类型名字{名字0,名字1,……名字n};
  2. 作用:用有意义的单词代替无意义的数字 color = 1 ;

enum color {red,yellow,green}

color = red;

http://www.jsqmd.com/news/689168/

相关文章:

  • 英特尔发布至强600系列工作站处理器与锐炫Pro B70 GPU,双芯联动重塑AI工作站格局
  • 从零到一:Tomcat深度实战 - 适合系列教程
  • IPSAS(国际公共部门会计准则)和法国的PCG(会计总方案)在收入确认上的核心区别,源于它们所遵循的根本会计模型和适用对象的不同
  • 豆包 linux-6.19/tools/accounting/delaytop.c 源码分析
  • SUMO新手避坑指南:从零配置你的第一个仿真(含test.rou.xml和sumocfg文件详解)
  • from和inpu的用法介绍(Mac实操版)
  • ABAP批量导入Excel数据实战:从文件选择到数据库插入的完整流程
  • 解锁学术新秘籍:书匠策AI——期刊论文写作的“全能魔法棒”
  • **发散创新:基于Python与Redis的混合增强型权限控制系统实战**在现代分布式系统中,权限管理早已不是简单的角色-资源映射
  • 茉莉花插件完整指南:让Zotero中文文献管理效率飙升的终极解决方案
  • Java基本语法学习
  • 从数月到分钟级:360智能体自动挖洞终结人工低效时代
  • 基于python的在线教育课程管理系统 带协同过滤推荐算法
  • SQL注入靶场23-37关实战通关攻略
  • 2026年最火的工程范式:Harness Engineering指南与应用
  • Elasticsearch分布式原理:集群数据分布机制与分片路由全流程深度剖析
  • 北京良友伟业搬家|同城/异地/日式搬家全场景服务及靠谱公司推 - 海棠依旧大
  • 5个关键问题:如何用Klipper固件解决3D打印精度与性能难题
  • 2026帮孩子选辅导班前,实测6款学习APP的真实体验 - 品牌测评鉴赏家
  • 从FHSS到OFDMA:Wi-Fi协议演进中的核心技术变革
  • 别再傻傻分不清了!一张图看懂PLM、ERP、MES、CRM在工厂里到底怎么分工协作
  • Linux文件系统(一):从磁盘结构到文件系统基础
  • STM32F103C8T6 PWM引脚-定时器-通道对照表
  • 在线语音转文字支持哪些格式?上传前检查与压缩建议全解析
  • Perfetto UI分析Native内存:看懂四个关键视图,揪出Android应用里的“隐形”泄漏点
  • 使用archlinux搭建arm开发环境(非linux)
  • Ofd2Pdf终极指南:3步实现OFD到PDF高效无损转换
  • Harness Engineering:AI Agent 落地企业的工程化核心
  • 从malloc到memsafe_c:2026规范强制要求的4类API替换清单,不改业务逻辑也能通过ISO/IEC 17961合规审计
  • Java:捕获特定异常