C语言汇总

汇总一(linux环境)

/bin :bin是二进制(binary)英文缩写。

/boot:存放的都是系统启动时要用到的程序。
/dev:包含了所有Linux系统中使用的外部设备。
/etc:存放了系统管理时要用到的各种配置文件和子目录。
/lib:存放系统动态连接共享库的。
/home:管理普通用户的主目录
/root:根用户(超级用户)的主目录

1. ~ 家目录符号
2. / 根目录符号
3. $ 普通用户
4. # 超级用户

汇总二(数据)

void类型大小为1个字节

'\0'---0
'\n'---10
' ' ---32 (这是个空格)
......
'0' ---48 (差48)
'1' ---49
......
'A' ---65
'B' ---66
......
'a' ---97 (差32)
'b' ---98

1.char

char 与 unsigned char (1字节)    2^8=256
char 数值范围:,-128~127
unsigned char 数值范围:0 ~256

若存储char类型 129,由于补码的存在,CPU读取的是补码,编译成功后,输出-127

若存储unsigned char 类型 -1 ,输出255

补码:1111 1111

反码:1111 1110

源码:1000 0001

float4字节、double 8字节

汇总三(常量、变量)

常量:

1.整型常量2.字符常量3.字符串常量4.浮点常量

变量:

定义:

<存储类型> <数据类型> <变量名>;

存储类型:1.自动:auto(可以不写)2.静态:static

                     3.寄存器:register4.外部:extern(静态存储)

数据类型:

1.字符变量

//1. 定义
char a;
//2. 定义并初始化
char a = 'a';
//3. 赋值
a = 'b';

2.整型变量

//1. 定义
short a;
int b;
long c;
//2. 定义并初始化
int b = 5;
//3. 赋值
b = 1;

3.浮点变量

//1. 定义
float a;
double b;
//2. 定义并初始化
float c = 5.5;
//3. 赋值
c = 1.1;

局部变量、全局变量、静态变量、外部变量

1.作用域:能使用的范围限制
#include <stdio.h>
int main(int argc, const char *argv[])
{
{
int a=10;
printf("in a=%d\n", a);
}
/*作用域*/
//printf("out a=%d\n", a);
return 0;
}花括号内为一个语句块

.花括号内为一个语句段。

2.时间周期:能使用的时间限制

结论:两次调用的函数中,变量b使用的空间不同,第一次调用后b的空间会释放掉,第二次会重新申请空间,所以两次打印b的值不同。

3.局部变量和全局变量
#include <stdio.h>
/*全局变量*/
int a=10;
int main(int argc, const char *argv[])
{
{
/*局部变量*/
int b=20;
printf("a=%d\n", a);
printf("b=%d\n", b);
}
//printf("a=%d\n", a);
//printf("b=%d\n", b);
return 0;
}

局部变量存储与栈中,全局变量存在于静态存储区

4.静态变量和外部变量
静态变量
#include <stdio.h>
void fun(void)
{
//在程序执行期间,只申请一次空间
static int b = 1;
printf("b=%d\n", b);
b = 2;
//函数结束,静态变量不释放
}
int main(int argc, const char *argv[])
{
fun();
fun();
return 0;
//程序结束,静态变量释放
}

输出结果为 b=1  b=2

说明b为同一个,使用的是同一块地址空间,第二次调用函数时,不在申请新地址去存b。main函数结束时静态存储区才释放。

加上static从原来的栈中存放改为静态存储区,整个程序执行期间都有不销毁。改变了生命周期

静态区:

1.常量2.静态变量3.静态局部变量4.全局变量

auto类型的 局部变量存储于栈之中

全局变量存储于静态空间区

程序结束,静态存储区内容才释放。

外部变量
A.c
int global_a = 100;
//static int global_a = 100;
B.c
#include <stdio.h>
extern int global_a;
int main(int argc, char *argv[])
{
//int global_a;
printf("global_a=%d\n", global_a);
return 0;
}
注意: extern声明的是定义过的全局变量(静态存储区),所以extern的变量是静态存储区(内存管理)
提醒:起名字要遵守语法规范,且要见名知意,尽量使用英文单词格式。gcc A.c B.c -o out

若B.c中global_a前没写extern,同样会打印出结果。因为int global_a = 100;是全局变量存储于静态区,同样会执行,但是还是要申请,因为此文件中其他同名变量可能会赋值

注意: extern声明的是定义过的全局变量(静态存储区),所以extern的变量是静态存储区(内存管理)提醒:起名字要遵守语法规范,且要见名知意,尽量使用英文单词格式。
 

全局变量和局部变量同名的话,采用就近原则

汇总四(内存管理)

1.内存管理

数据区:这一块的内存在程序编译时就已经分配好,在程序整个运行期间都存在。属于静态内存分配。
栈:自动局部变量,系统分配的内存,向下增长
堆:程序员主动申请的、动态分配的内存,向上增长。(malloc、free)

2.自动局部变量和静态局部变量

(auto)自动局部变量:栈区;生命周期是当前语句块、函数,作用域是当前语句块、函数。
(static)静态局部变量:数据区;生命周期是当前程序,作用域是当前语句块、函数。

3.全局变量、静态全局变量


全局变量:数据区;生命周期是当前程序,作用域是当前程序。
注意不能被auto修饰,全局变量是静态内存分配。
(static)静态全局变量:数据区;生命周期是当前程序,
作用域是当前文件。不能跨越.c文件

4.全局变量与外部变量


全局变量可以被声明外部变量,所以外部变量是静态内存分配。
静态全局变量因为作用域的限制,不能被声明为外部变量。

汇总五 (运算符)

1.浮点类型数据不能取余!


2.前++、前--         

  运算规则:先运算,后自增\自减

int a = 1, b = 2;
a = b++;
printf("a == %d, b == %d\n", a, b);
// a == 2, b == 3

3.后++、 后--
运算规则:先自增\自减,后运算

int a = 1, b = 2;
a = ++b;
// a == 3, b == 3

4.逻辑运算

1.逻辑运算的结果只有真假值,&&的优先级比||高,优先执行;

2.|| 运算有提前截断现象,左条件式为真时,右条件不会执行。

#include <stdio.h>
int main(int argc, const char *argv[])
{
int a=1, b=2;
if( a++ || b++ ){
printf("a=%d, b=%d\n", a, b);
}
return 0;
}
//a=2,b=2

5.位运算

参与运算的量,按二进制位进行运算。
包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

6.条件运算符(三目运算符)


表达式A ? 表达式B : 表达式C
这是一个三目运算符,用于条件求值,表达式A如果为真,执行表达式B,反之执行表达式C。

汇总六 (输入输出)

1.输出字符  putchar

int putchar(int);
eg:
char a = 'A';
putchar(a);
参数: 为字符常量、变量或表达式
功能:把字符c输出到显示器上
返值:正常,为显示的代码值;

2.输出字符串 puts

int puts(const char *);
eg:
char str[20] = "hello world";
puts(str);
功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以‘\0’结束

3.输入字符 getchar

int getchar(void);
eg:
char c = getchar();
功能:从键盘读一字符
返值:正常,返回读取的代码值;出错或结束键盘输入,返回-1

4.输入字符串

char *gets(char *);
eg:
char str[20];
gets(str);
功能:从键盘输入一以回车结束的字符串放入字符数组中,
并自动加‘\0’
说明1:函数没有实现检查字符串长度能否完全放入,所以
输入串长度应小于字符数组维数。
说明2:与scanf函数不同,gets函数并不以空格作为字符
串输入结束的标志。
#include <stdio.h>
int main(int argc, const char *argv[])
{
char string[15] = {0};
printf("Input a string:");
gets(string);
printf("%s\n", string);
return 0;
}

5.scanf

int scanf(const char *restrict, ...);
eg:
int n;
char str[20];
scanf("%d %s", &n, str);
%d 有符号整型 %c 字符 %s 字符串 %f 单精度浮点型
%s 获取字符串时,提供的应当是一个指向字符数组的指针
功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束
返值:正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符&

在整型时

字符型时

吃掉摁下的回车键 ;   抑制符*的使用,吃掉了空格(字符之间多敲了一个空格)

scanf2.c
#include <stdio.h>
3.处理脏数据
int main(int argc, const char *argv[])
{
char ch1, ch2, ch3;
//%c 作为格式输入时,对空格键,tab键,\n 都作
为一个有效字符读入
scanf("%c%c%c", &ch1, &ch2, &ch3);
printf("ch1 = %c ch2 = %c ch3 = %c\n",
ch1, ch2, ch3);
//enter 按键需要吃掉 getchar获取到这个\n
getchar();
//%*c抑制一个字符
scanf("%c%*c%c", &ch1, &ch2);
printf("ch1 = %c ch2 = %c\n", ch1,ch2);
return 0;
}

6.3.处理脏数据
 

//回收垃圾方式的三种方式
//方法1:空格、若干空格、tab、\n
#if 0
scanf("%c %c %c", &a, &b, &c);
#endif
//方法2:%*c 回收任何一个字符, tab 键 ,空格键,
\n
#if 0
//%*c 回收任何一个字符, tab 键 ,空格键,
\n
scanf("%c%*c%c", &a, &b);
#endif
//方法3:getchar()回收
#if 0
scanf("%c", &a);
getchar(); //吃一个字符
scanf("%c", &b);
#endif
printf("a=%c b=%c c=%c\n", a, b, c);
return 0;
}

方式一可以吃掉多个空格

若只是输入一个字符,建议方式三

汇总七(控制语句)

1.条件语句

    a.  if ----  else

b.   Switch --  case  多条件选择语句

2.循环语句

a.while

continue 当前循环到此结束,重新开始

break则是退出循环

b.   do ---- while

1) while循环中 (条件)后面没有分号,do while 循环中 (条件) 后面有“,”

2) while与do while执行循环体与判断的顺序不同
3)各自的应用场合不同。while强调“条件是否满足”do while强调“动作的行为”

两个死循环

c.for循环

3.break与continue

break

break从循环体内跳出,即提前结束当前循环
注意:     

break只能用在循环语句 和 switch语句中。

continue


continue语句结束本次循环,接着判定下一次是否执行循环。
注意:
continue只结束本次循环,而break终止本层循环
continue是循环控制语句,不能实现跳出条件语句if、switch。

4.return

return语句的一般形式: return(<表达式>)主要用于终止包含它的函数的执行若终止的为主函数,则主程序结束
return 表达式的结果可以被返回到调用函数接收存储。

return的值一般有以下几种含义:
1.函数是否正常执行的反馈
库函数常用0表示正常结束,非0有异常情况

自定义函数,判定真假,非零为真
2.函数需要返回一个运算结果值
根据定义的返回值类型,存储、返回值。传值要注意类型一致,或主动强制转换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android】MQTT

目录 MQTT 协议简介应用场景优点缺点 部署服务端下载安装包启动服务器 搭建客户端下载SDK添加依赖配置MQTT服务和权限建立连接订阅主题发布消息取消订阅断开连接 MQTT客户端工具最终效果实现传感器数据采集与监测功能思路 MQTT 协议 简介 MQTT&#xff08;Message Queuing Te…

Centos7卸载minio

如果是按照上一篇文章安装的minio 1.停止minio pkill minio2.删除相关配置文件(在/usr/local目录下执行) rm -rf minio 如果配置了开机自启 1.取消注册minio服务 chkconfig --del startMinio.sh2.禁用开机自启动 chkconfig startMinio.sh off3.删除启动脚本 rm /etc/rc…

Windows Server扩展卷变灰怎么办?

当Windows Server中的某一个分区&#xff0c;特别是系统&#xff08;C&#xff09;分区磁盘空间不足时&#xff0c;您可能需要使用内置磁盘管理工具的“扩展卷”功能扩展分区了。但不幸的是&#xff0c;当您尝试扩展C盘驱动器时&#xff0c;很有可能会出现Windows Server扩展卷…

Android底层摸索改BUG(一):Android系统状态栏显示不下Wifi图标

这是我入职的第一个BUG&#xff0c;头疼&#xff0c;隔壁实习生一周解决了&#xff0c;我多花了几天 其中最大的原因就是我思考复杂了&#xff0c;在公司系统上&#xff0c;此BUG标题为&#xff1a; 请确认Wifi优先级&#xff0c;状态栏Wifi被忽略 BUG意思就是&#xff1a;当…

云原生Docker Cgroups资源控制操作

目录 资源控制 cgroups四大功能 CPU 资源控制 设置CPU使用率上限 进行CPU压力测试 设置50%的比例分配CPU使用时间上限 设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 设置容器绑定指定的CPU 对内存使用的限制 限制容器可以使用的最大内存 限制可用的…

2023年5个美国代理IP推荐,最佳代理花落谁家?

美国代理IP指的是代理服务器位于美国的IP地址&#xff0c;对于跨境业务来说&#xff0c;这些代理IP地址可以用于隐藏用户的真实IP地址&#xff0c;将其网络流量路由通过美国的服务器&#xff0c;以实现一些特定的目的。由于近年来&#xff0c;面向美国市场的跨境商家越来越多&a…

软件测试面试1000问(含文档)

前前后后面试了有20多家的公司吧&#xff0c;最近抽空把当时的录音整理了下&#xff0c;然后给大家分享下 开头都是差不多&#xff0c;就让做一个自我介绍&#xff0c;这个不用再给大家普及了吧 同时&#xff0c;我也准备了一份软件测试视频教程&#xff08;含接口、自动化、…

java发送邮件

java发送邮件工具类 JavaMailSenderImpl JavaMailSenderImpl 类是 Spring 框架提供的一个实现了 JavaMailSender 接口的邮件发送类&#xff0c;用于发送邮件&#xff0c;提供接口如下&#xff1a; setJavaMailProperties&#xff1a;设置属性Properties setProtocol&#xff1…

如何从单体架构迁移到微服务架构:挑战和最佳实践

当单体架构成为项目增长的瓶颈时&#xff0c;迁移到微服务架构就成了必然的选择。 微服务虽然具有明显的优点&#xff0c;但由于其内在复杂性和缺乏一种通用的迁移方案&#xff0c;实施过程中可能会遇到不少挑战。本文旨在分享解决方案架构师在单体架构向微服务迁移过程中的专…

OpenCV实现物体尺寸的测量

一 &#xff0c;项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物&#xff0c;根据已知的计算未知物体尺寸。 如下图所示&#xff0c;绿色的板子尺寸为220*300&#xff08;单位&#xff1a;毫米&#xff09;&#xff0c;通过程序计算白色纸片的长度。 主要是通过…

C盘满了怎么清理文件?

电脑的C盘是我们电脑存储系统文件和应用程序的一个重要盘符&#xff0c;很多人经常会遇到C盘空间不足的问题&#xff1b;虽然我们可以通过卸载程序或者删除文件来释放空间&#xff0c;但是在这个过程中往往会误删掉一些重要的文件&#xff0c;造成部分程序可能无法正常使用。 因…

【EI会议征稿】第五届大数据与信息化教育国际学术会议(ICBDIE 2024)

【有往届检索记录】第五届大数据与信息化教育国际学术会议&#xff08;ICBDIE 2024&#xff09; 2023 5th International Conference on Big Data and Informatization Education 第五届大数据与信息化教育国际学术会议&#xff08;ICBDIE 2024&#xff09;定于2024年01月19-…

怒刷LeetCode的第28天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;动态规划 方法二&#xff1a;迭代 方法三&#xff1a;斐波那契数列公式 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;栈 方法二&#xff1a;路径处理类 方法三&#xff1a;正则表达式 方法…

机器学习(新手入门)-线性回归 #房价预测

题目&#xff1a;给定数据集dataSet&#xff0c;每一行代表一组数据记录,每组数据记录中&#xff0c;第一个值为房屋面积&#xff08;单位&#xff1a;平方英尺&#xff09;&#xff0c;第二个值为房屋中的房间数&#xff0c;第三个值为房价&#xff08;单位&#xff1a;千美元…

RTL SDR的PYTHON开发环境搭建

不得不说RTL SDR真是神器&#xff0c;直接把SDR的入门门槛拉低到了几十块钱。对于RTL SDR的学习开发&#xff0c;有大佬写的《Software_Defined_Radio_using_MATLAB_Simulink_and_the_RTL-SDR》&#xff0c;另外&#xff0c;除了MATLAB&#xff0c;近些年爆火的PYTHON当然也是可…

系统集成测试(SIT)/系统测试(ST)/用户验收测试(UAT)

文章目录 单元测试集成测试系统测试用户验收测试黑盒测试白盒测试压力测试性能测试容量测试安全测试SIT和UAT的区别 单元测试 英文 unit testing&#xff0c;缩写 UT。测试粒度最小&#xff0c;一般由开发小组采用白盒方式来测试&#xff0c;主要测试单元是否符合“设计”。 …

智能振弦传感器:参数智能识别技术的重要科技创新

智能振弦传感器&#xff1a;参数智能识别技术的重要科技创新 智能振弦传感器是一种能够自动识别传感器参数的高科技产品。它的研发得益于河北稳控科技的不断创新和努力&#xff0c;其电子标签专用读数模块模块TR01将传感器生产和标定过程实现了自动化。该模块将温度电阻两芯线…

Mysql第四篇---数据库索引优化与查询优化

文章目录 数据库索引优化与查询优化索引失效案例数据准备1. 全值匹配2 最佳左前缀法则(联合索引)主键插入顺序4 计算、函数导致索引失效5 类型转换(自动或手动)导致索引失效6 范围条件右边的列索引失效7 不等于(!或者<>)索引失效8 is null可以使用索引, is not null无法使…

【Mongo】数据删了磁盘空间但没有减少

Author:skate Time:2023/10/22 一、问题描述 产线用户反馈&#xff0c;一个华为云的mongo实例磁盘空间告警&#xff0c;使用率超过90%&#xff08;使用状况 1630.9/1800GB&#xff09;&#xff0c;让其通过数据库运维平台找到占用大空间的表&#xff0c;然后清理历史数据&…

爱创科技携手洽洽食品,探索渠道数字化最优解!

坚果的下半场&#xff0c;是从吃到喝。 消费升级大潮下&#xff0c;健康养生理念逐渐深入人心。以“天然健康”为核心的食品新消费潮流正加速形成&#xff0c;一个个打着“美味与营养”黄金设定的品类风口正被不断创建&#xff0c;其中人气有增无减的当属植物基饮品。据相关报告…