c语言开篇---跟着视频学C语言

标识符

标识符必须声明定义,可以是变量、函数或其他实体。

Int是标识符吗?

不是,int是c语言关键词,不是随意命名的

C语言关键词如下:

常量

不需要被声明,不能赋值更改。

printf函数

printf是由print打印和format格式,占位符打印

定义写在<stdio.h>当中。

整数数据类型

定义不同整型原因:占用内存大小不一样,表示数据范围不一样。

char、short、int、long、longlong占用字节和数值范围:

c语言并未规定数据类型的大小范围,具体实现交由编译器和平台决定

sizeof(测量实体占用字节大小)

占用字节越大可表示范围越大。

不要最高位作为符号位 unsigned。

1~5以看完。浮点类型

浮点类型float

%d占位符用于整型,%f占位符用于浮点型。

float至少能表示6位有效数字。

浮点类型double

比float精度更高的类型,双精度浮点型double。

浮点类型所占字节

浮点类型,精度越高,范围越大,所占字节越大。

float 4;double 8字节。

变量常量

变量:可以改变并且有可能变化的。

常量:没有变化且不能变化的。

声明变量:

标识符:由自己命名的标志,表示变量、函数或其他实体的名称。

标识符命名规则:1、只能由大小写英文字母、数字或下划线组成。

2、标识符不能以数字开头。

3、标识符不能是已有关键字。

关键词:C语言标准规定,有特殊意义和用途,可以直接在程序中被使用。比如:short、int、long 、float、double。

声明变量公式:【数据类型+标识符名+分号】。先声明在使用!!!

变量初始化和赋值方法:

1、变量声明后,立即初始化。

int a=100;
printf("%d\n",a);

2、变量先声明在变量赋值。

int a;
a=100;
printf("%d\n",a);

注:变量可以多次赋值,但不能多次初始化。

常量

字面常量无需声明,编译器可判断类型。

符号常量:

#define 符号常量  值

字符类型变量与常量

字符常量是由单引号包括的。

例如: 'a'

占位符

整数类型 %d
浮点类型 %f
字符类型 %c

字符类型占用空间:

字符变量:char

字符和数值存在一一对应的映射关系,被称为美国信息交换标准代码即ASCII码。

字符类型仅需要一个字节可以正常存储。

字符类型就是整型类型
字符类型只占用一个字节
字符类型命名为char
\n为换行符,\n表示结束一行打印,并从下一行开始打印。

例题:

定义一个字符变量letter,将其初始化为大写字母A。通过ASCII中的关系,将大写字母A,变成小写字母A,并将小写字母A打印出来。

#include <stdio.h>
int main ()
{
char letter ='A';
letter =letter+32;
printf("letter =%c",letter);
return 0;
}

数值0:用于标识字符串结束。

转义字符:\

\数值(八进制):转义字符
printf("hello\0world");
打印hello
printf("\110\145\154\154\157");
也是打印hello
printf("hello\12world");
打印hello
world
效果等同于\n

printf

无符号整型占位符:%u

精度

最小字段宽度

使用最小字段宽度
如果指定标志0,则会用0来补齐最小宽度。

6~10

scanf(用于输入)

_CRT_SECURE_NO_WARNINGS

scanf将输入的字符串按照对应的转换规范进行转换。

转换完成后的二进制,将依次存放到后续参数的变量地址中。

输入字符串
#include <stdio.h>
int  main()
{
char str[10];
scanf("%s",str);
printf("%s",str);
return 0;
}
输入字符
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);
printf("%d  %c\n",c,c);
return 0;
}

运算符12

指针

取地址运算符&

&数据对象
获取数据对象首地址和所需储存空间大小

指针类型

目标数据类型 * 变量名    声明指针

指针类型的值是目标数据对象首地址。

数据对象的空间大小存储在哪?

首地址可以复制,指针类型改变,导致数据长度改变,因此无法正确复制。
指针类型是通过值来保存目标数据对象的首地址,通过类型本身来标记目标数据对象的空间大小。

取值运算符 *

*指针
根据指针中存储的首地址和空间大小找到目标数据对象。
指针所占用的字节大小,还和编译器或者编译配置有关。

指针访问数组

第一个元素获取数组首地址。

取值运算符的优先级高于算术运算符。

数组名获取数组首地址。

数组名出现在表达式中,数组名将会转化为指向数组第一个元素的指针。
比如:arr+1等同于&arr[0]+1
例外:1、对数组名使用sizeof时2、对数组名使用取地址运算符&时

下标运算符最终会展开为指针的形式。

指针作为参数进行传递

指针的指针(多级指针)

int  *数据对象的指针被称为【二级指针】

多维数组

指针数组  int*  pB[10]
数组指针  目标类型 (*变量名)[元素个数]

数组指针的移动和取值

35

字符串处理函数

#include "string.h"

strlen:获取字符数组中字符串 的长度

strcat:字符串拼接函数,将源字符串拼接到目标字符串后面

strcpy:字符串复制函数,将源字符串复制到目标字符串中

strcmp:字符串比较函数,,比较两个字符串,一致返回0 ,不同1、-1

37

指针实现字符串处理函数

#include <stdio.h>
size_t  mstrlen(const  char  *str)
{
if(str=NULL)
{
return 0;
}
size_t  len =0;
while(*str !='\0')
{
len++;
str++;
}
return  len;
}
​
int main()
{
size_t  len;
len =mstrlen(NULL);
printf("%d\n",len);
​
len =mstrlen("");
printf("%d\n",len);
​
len =mstrlen("HELLO");
printf("%d\n",len);
return 0;
}

#include "stdio.h"
​
char * mstrcat(char *  destination ,const char * source)
{
if(destination == NULL)
{
return NULL;
}
if(source == NULL)
{
return destination;
}
char *ret =destination;//保存字符串首地址
while (*destination !='\0')
{
destination++;
}
while(*source !='\0')
{
*destination =*source;//把source追加到destination后面。
destination++;
source++;
}
*destination ='\0';
return ret;
}

int mstrcmp(const char *str1,const char *str2)
{
if(str1==NULL && str2 == NULL)
{
return 0;
}
if(str1 !=NULL && str2 ==NULL)
{
return 1;
}
if(str1 == NULL && str2!==NULL)
{
return -1;
}
int  ret =0;
while (1)
{
if(*str1 !=*str2)
{
if(*str1 > *str2)
{ret = 1;
}
else
{
ret =-1;
}
break;
}
else
{
if(*str1 == '\0' &&  *str2 == '\0')
{
break;
}
str1++;
str2++;
}
}
return ret;
}

初识结构化数据

指向结构的指针

联合 union
结构体与联合体

内存对齐!

联合共用。

枚举enum

枚举会从0开始,依次递增。

若想从1开始递增
enum msgType{
eInteger=1;
eFloat,
eString
};
标识符的作用域

内层作用域将覆盖外层作用域。

预处理指令
取消宏定义
#define NUM 1
#undef NUM
#define NUM  3
typedef关键词

定义数据类型别名

经常用于结构

typedef没有创建任何新类型,只是为某个已存在的类型增加了一个方便的别名

typedef与#define的区别

#define可以为值设置一个别名,而typedef不行
例如:  #define  PI  3.1415926
#define由预编译器处理,并且修改替换代码,typedef不受预处理影响,在编译时由编译器处理
#define也能为类型定义别名,但某些情况下,使用typedef更合适
例如:   typedef  char  *STRINGSTRING   name1,name2;

整型类型的别名无需自己定义,编译器会根据平台的整型范围大小,设置对应的别名。头文件:stdint.h

printf的转换规范如何保证可移植性?

头文件 inttype.h
​
预处理中的分支结构
#if  常量表达式
在编译前,由处理器处理,根据分支走向,保留需要走向分支的代码,删除被跳过分支的代码。
#if
#else
#elif
​
#ifdef
#ifndef
#ifdef #ifndef

还可以使用#if defined(宏)或 #elif defined(宏)

#include

#include <文件夹>
在编译器的包含目录中搜索文件,< >编译器自带文件,在编译器的包含目录中
​
#include "文件名"
先在当前目录中搜索文件,再到编译器的包含目录中搜索文件

多文件代码

存储类别

声明在代码块内的任何变量,都属于自动存储类别的变量。

指明一个变量属于自动存储类别  auto

n的生命期----数据对象从创建到销毁之间。数据对象存在的周期。

n的作用域----标识符对数据对象指代关系存在的区域,它是一种关联关系。

自动变量拥有块内作用域及生命期。---局部变量

文件操作

fopen

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

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

相关文章

对Transformer中的Attention(注意力机制)的一点点探索

摘要&#xff1a;本文试图对 Transformer 中的 Attention 机制进行一点点探索。并就 6 个问题深入展开。 ✅ NLP 研 1 选手的学习笔记 简介&#xff1a;小王&#xff0c;NPU&#xff0c;2023级&#xff0c;计算机技术 研究方向&#xff1a;文本生成、摘要生成 文章目录 一、为啥…

python创建exe文件

1、搭建环境 pip install pyinstaller 2、准备测试代码 exe_test.py import timeprint("hello") print("hello") print("hello") print("hello")time.sleep(5) 注&#xff1a;添加sleep以便在执行exe文件的时候能看到结果 3、生…

linux-OpenSSL升级

1.安装编译所需的安装包 yum install -y gcc make perl zlib-devel 2.从 OpenSSL 官网下载&#xff08;https://www.openssl.org/source/openssl-1.1.1v.tar.gz&#xff09; 注:如果原先版本为1.x.x,升级时还是需要选择1.x.x 3. 编译安装 # 解压tar -xvf openssl-1.1.1v.tar…

[Linux]进程间通信--管道

[Linux]进程间通信–管道 文章目录 [Linux]进程间通信--管道进程间通信的目的实现进程间通信的原理匿名管道匿名管道的通信原理系统接口管道特性管道的协同场景管道的大小 命名管道使用指令创建命名管道使用系统调用创建命名管道 进程间通信的目的 数据传输&#xff1a;一个进…

docker笔记7:Docker微服务实战

1.通过IDEA新建一个普通微服务模块 建Module docker_boot 改POM <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

【Maven教程】(四)坐标与依赖:坐标概念,依赖配置、范围、传递性和最佳实践 ~

Maven 坐标与依赖 1️⃣ 什么是Maven 坐标2️⃣ 坐标详解3️⃣ 依赖的配置4️⃣ 依赖范围5️⃣ 传递性依赖6️⃣ 依赖调解7️⃣ 可选依赖8️⃣ 最佳实践8.1 排除依赖8.2 归类依赖8.3 优化依赖 &#x1f33e; 总结 正如前面文章所述&#xff0c;Maven 的一大功能是管理项目依赖…

Spring Boot与Kubernetes:现代云部署的完美组合

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Python实操 PDF自动识别并提取Excel文件

最近几天&#xff0c;paddleOCR开发了新的功能&#xff0c;通过将图片中的表格提取出来&#xff0c;效果还不错&#xff0c;今天&#xff0c;作者按照步骤测试了一波。 首先&#xff0c;讲下这个工具是干什么用的&#xff1a;它的功能主要是针对一张完整的PDF图片&#xff0c;可…

【MySQL】CRUD (增删改查) 基础

CRUD&#xff08;增删改查&#xff09;基础 一. CRUD二. 新增 &#xff08;Create&#xff09;1. 单行数据 全列插入2. 多行数据 指定列插入 三. 查询&#xff08;Retrieve&#xff09;1. 全列查询2. 指定列查询3. 查询字段为表达式4. 别名5. 去重&#xff1a;DISTINCT6. 排序…

软考备考-程序员-备考笔记

软考备考-程序员-备考笔记 持续更新中》》》》》 更新日志&#xff1a; 刷题软件&#xff1a; 希赛网&#xff1a;每日一练和往年真题是免费的 软考通&#xff1a;完全免费 软考真题&#xff1a;完全免费 51CTO题库:微信小程序&#xff0c;不用下载&#xff0c;顺手 试卷题…

持安科技何艺:基于可信验证的应用访问安全模型 | CCS2023演讲分享

近日&#xff0c;2023CCS成都网络安全大会在成都举办&#xff0c;大会由四川省互联网信息办公室指导&#xff0c;成都市互联网信息办公室、成都高新技术产业开发区管理委员会联合主办&#xff0c;无糖信息技术有限公司承办。 持安科技创始人兼CEO何艺受邀参与2023CCS大会金融安…

【继RNN之后的一项技术】Transfomer 学习笔记

谷歌团队在17年的神作&#xff0c;论文17年6月发布 https://arxiv.org/abs/1706.03762 被NIPS2017收录&#xff0c;目前引用量已经逼近3w。 以下内容参考李沐老师的课程《动⼿学深度学习(Pytorch版)》 简介 注意力 自主性&#xff1a;有目的的搜索某样东西&#xff08;键&…

Xilinx FPGA 超温关机保护

在UG480文档&#xff0c;有关于FPGA芯片热管理的介绍。 首先需要理解XADC中的 Over Temperature&#xff08;OT&#xff09;和User Temperature的关系。片上温度测量用于关键温度警告&#xff0c;也支持自动关机&#xff0c;以防止设备被永久损坏。片上温度测量在预配置和自动关…

C++:类和对象(三)

本文主要介绍初始化列表、static成员、友元、内部类、匿名对象、拷贝对象时编译器的优化。 目录 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、static成员 1.概念 2.特性 三、友元 1.友元函数 2.友元类 四、内部类 五、匿名对象 六、拷…

android上架备案公钥和md5获取工具

最近很多公司上架遇到了一个问题&#xff0c;就是要提供app的备案证明&#xff0c;现在android上架都需要备案了&#xff0c;但是我们的证书都是通过工具生成的&#xff0c;哪里知道公钥和md5那些东西呢&#xff1f;无论安卓备案还是ios备案都需要提供公钥和md5。 包括ios的备案…

上海控安携汽车网络安全新研产品出席AUTOSEMO“恒以致远,共创共赢”主题研讨会

8月31日&#xff0c;AUTOSEMO“恒以致远&#xff0c;共创共赢”主题研讨会在天津成功召开。本次大会由中国汽车工业协会软件分会中国汽车基础软件生态标委会&#xff08;简称&#xff1a;AUTOSEMO&#xff09;与天津市西青区人民政府联合主办。现场汇聚了100余位来自产学研政企…

前端如何将后台数组进行等分切割

前端如何切割数组 目标&#xff1a;前端需要做轮播&#xff0c;一屏展示12个&#xff0c;后端返回的数组需要进行切割&#xff0c;将数据以12为一组进行分割 环境&#xff1a;vue3tselement plus 代码如下&#xff1a; function divideArrayIntoEqualParts(array, chunkSiz…

lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)

目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …

智慧公厕破解公共厕所管理的“孤岛现象”

在现代社会中&#xff0c;公共厕所是城市管理中的一项重要任务。然而&#xff0c;经常会出现公厕管理的“孤岛现象”&#xff0c;即每个公厕都是独立运作&#xff0c;缺乏统一的管理和监控机制。针对这一问题&#xff0c;智慧公厕的出现为解决公共厕所管理难题带来了新的方案。…

【Unity3D】UI Toolkit样式选择器

1 前言 UI Toolkit简介 中介绍了样式属性&#xff0c;UI Toolkit容器 和 UI Toolkit元素 中介绍了容器和元素&#xff0c;本文将介绍样式选择器&#xff08;Selector&#xff09;&#xff0c;主要包含样式类选择器&#xff08;Class Selector&#xff09;、C# 类选择器&#xf…