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

C语言常见知识点

目录

一、单位

二、变量

三、常量

四、转义字符

五、操作符

六、指针

七、数组


一、单位

        在刚接触编程时,肯定会了解到计算机的存储单位,它们由小到大分别为bit(位)、Byte(字节)、KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)等。同为存储单位,自然也就可以进行换算,其换算关系如下:

        1 Byte = 8 bit;

        1 KB = 1024 Byte;

        1 MB = 1024 KB;

        1 GB = 1024 MB;

        1 TB = 1024 GB。

二、变量

        看完了存储单位,接下来就到了变量了。对于变量,少不了要用它来进行操作,自然也得注意一些使用要点,若是不注意,就极有可能出错,下面是一些注意要点:

        1、局部变量的作用域是局部变量所在的局部范围,全局变量的作用域是整个程序;

        2、当全局变量和局部变量的变量名相同时,编译器优先使用局部变量;

        3、为提高代码质量,在写代码的过程中,应尽可能的避免使用全局变量;

        在这,有必要着重讲一下变量的命名规则首先,变量名只能由字母数字下划线组成,其中需要注意的是:变量名不可直接用数字作开头;接下来就是变量名不宜过长,应当简洁明了,同时也应当让人一看变量名就大概清楚该变量的用途;还有就是在对结构体进行命名时,每个单词的首字母都要大写,例如:Peo;而对变量函数进行命名时,则是第一个单词的首字母不用大写,其余单词的首字母要大写,例如:initQueue;当然,也可用下划线来进行命名,例如:init_queue;最后就是变量名不可与关键字重复。

        变量的类型有很多,其中就有极其常见的基本数据类型,可分为 char、short、int、long、long long、float、double,接着每一个又可分为 signed 和 unsigned 类型,如:char 又可分为 signed char 和 unsigned char 两种类型。

三、常量

        常量也是极其常用的,其包括字面常量、const 修饰的常变量、#define 定义的标识符常量以及枚举常量。

        注意:const 修饰的常变量无法用来创建数组。

四、转义字符

        转义字符有很多,下面是一些常见的转义字符及含义:

        \':用于表示单引号字符;

        \'':用于表示双引号字符;

        \\:用于表示一个反斜杠;

        \a:警告字符;

        \b:退格符;

        \f:进纸符;

        \t:水平制表符;

        \v:垂直制表符;

        \n:换行;

        \ddd:ddd 为 1~3 个八进制数字;

        \xdd:dd 为 2 个十六进制数字。

        注意:虽然转义字符看起来有很多个字符,但它只能算是一个字符。

五、操作符

        操作符可谓是极其的多,分别有:算术操作符(+、-、*、/、%)、移位操作符(>>、<<)、位操作符(&、^、|)、赋值操作符(=、+=、-=、*=、/=、&=、|=、^=、>>=、<<=)、单目操作符(!、-、+、&、sizeof、~、--、++、*、(类型))、关系操作符(>、>=、==、<=、<、!=)、逻辑操作符(&&、||)、条件操作符(exp1 ? exp 2 : exp3)、逗号表达式(exp1, exp2, exp3……, expN)、下标引用操作符( [ ] )、函数调用操作符( ( ) )以及 . ->

        这里需要注意的是:

        1、移位操作符和位操作符只针对整数;

        2、sizeof 的后面是类型时,才必须加括号;

        3、在 && 连接多个逻辑表达式时,只要前面有一个表达式为假,那后面的表达式就都不用判断了,因为此时整个表达式为假;

        4、在 || 连接多个逻辑表达式时,只要前面有一个表达式为真,那后面的表达式就都不用判断了,因为此时整个表达式为真;

        5、逗号表达式中只有最后一个表达式的值是真正决定整个表达式的值,前面的表达式只是对最后一个表达式的结果产生影响;

六、指针

        指针让代码更便捷且高效,但它也很危险,稍不注意就会 bug 频出,可谓是一把双刃剑。从指针的本质来看,可以发现指针其实也是个变量,也是在内存中开辟一个空间来存放数据,只不过存放的是其他变量的地址。

        根据其所存放的是何种变量的地址,就可以知道该指针是什么类型,例如:若存放的是 int 类型的变量的地址,那该指针变量的类型就是 int* 类型。当然,指针变量也可存放指针变量的地址,这时就会分出一级指针、二级指针等类型,一级指针就是刚刚举的例子中 int* 类型的指针变量,存放的地址不是指针变量的地址,至于二级指针则存放的是一级指针的地址,后面更多级的指针以此类推就行了。

        既然,指针可以存指针的地址,那自然也可以存数组、函数的地址。由此便可得到数组指针、函数指针

        注意:

        1、指针的类型会影响对其解引用时所访问空间大小。例如:int* 类型的指针解引用时,只能访问 4 个字节,而 double* 类型的指针解引用时,可以访问 8 个字节;

        2、指针的类型会影响对其加或减正整数时所跳过的地址大小。例如:int* 类型的指针加一时,会跳过 4 个字节的地址,而对double* 类型的指针加一时,会跳过 8 个字节的地址;

        3、指针减指针的绝对值是两指针之间的元素个数,只不过执行此操作时,要保证这两个指针指向同一个数组,且两指针的类型相同;

        4、无指针加指针这一操作。

七、数组

        前面指针可分为一级指针、二级指针等,其实,数组也有类似的分类,如:一维数组、二维数组、三维数组等。对这些数组的理解也可近似于前面指针的理解,如:一维数组中存放的元素不是数组,二维数组存放的元素是一维数组,三维数组中存放的元素是二维数组。还有就是,指针能存放数组的地址,那数组也可存放指针,这时的数组就为指针数组了,例如:int* arr[10]; 。

        注意:在使用数组时,要小心数组的越界访问。

附:若有不足,望指出。

^_^感谢^_^

相关文章:

C语言常见知识点

目录 一、单位 二、变量 三、常量 四、转义字符 五、操作符 六、指针 七、数组 一、单位 在刚接触编程时&#xff0c;肯定会了解到计算机的存储单位&#xff0c;它们由小到大分别为bit&#xff08;位&#xff09;、Byte&#xff08;字节&#xff09;、KB&#xff08;千字…...

产品设计——应用架构

我的理解应用架构是业务架构的落地&#xff0c;微服务架构下平台的应用架构设计&#xff0c;实质是根据业务来明确应用微服务的边界。因此业务不同&#xff0c;应用架构图也不同。但是基本框架应该相差不大。 其划分原则莫过于高内聚、低耦合。这个跟接口设计是一致的。我们总是…...

Linux初阶——动静态库

一、静态库&#xff08;格式&#xff1a;libxxx.a&#xff09; 1. 原理 在运行之前就已经把函数的实现代码拷进 main.c 文件里了&#xff0c;因此静态库的权限是没有可执行权限的&#xff0c;因为根本不会执行到静态库里的内容。静态库的创建原理本质上就是把所有的函数源文件…...

创建一个c#程序,实现字符串类型转整数类型

首先&#xff0c;创建一个c#程序 在代码编辑器中编写代码&#xff0c;点击Run按钮或者按下F5键来运行程序。 下面&#xff0c;编写将字符串类型转换为整数类型的代码。 sing System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…...

Spring Boot知识管理系统:敏捷开发实践

3系统分析 3.1可行性分析 通过对本知识管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本知识管理系统采用JAVA作为开发语言&#xff0c;Spring Boot框…...

算法竞赛(Python)-AI的思维模式(搜索)

文章目录 一 、深度优先搜索1 零钱搭配2“油漆桶”与连通性 二 、记忆化三、在游戏中制胜的AI1 永远的平局——井字棋2 一起来解谜——数独3 数字华容道 一 、深度优先搜索 深度优先搜索是最基本的搜索方法&#xff0c;在深度优先搜索的过程中&#xff0c;如果把所有的可行解看…...

Android Studio开发Kotlin项目中遇到的问题解决集

背景&#xff1a;Android Studio 2022.3.1 1.Unexpected tokens (use ; to separate expressions on the same line) 无法在同一行声明一个变量并实例化。 解决&#xff1a;分开 &#xff08;1&#xff09; var aaCo:Runoob<String>aaCoRunoob("aa") &…...

【LeetCode】708. 循环有序列表的插入

目录 一、题目二、解法完整代码 一、题目 给定循环单调非递减列表中的一个点&#xff0c;写一个函数向这个列表中插入一个新元素 insertVal &#xff0c;使这个列表仍然是循环非降序的。 给定的可以是这个列表中任意一个顶点的指针&#xff0c;并不一定是这个列表中最小元素的…...

2.1.ReactOS源码分析ReadFile函数分解

2.1.ReactOS源码分析ReadFile函数分解 2.1.ReactOS源码分析ReadFile函数分解 文章目录 2.1.ReactOS源码分析ReadFile函数分解ReadFile函数的分析ReadFile函数的声明ReadFile函数的核心代码 ReadFile函数的分析 BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED)…...

Gridview配置数据源--信任服务器证书

目录 背景过程Gridview配置数据源GridView与数据源&#xff1a;数据库连接与安全&#xff1a;信任服务器证书&#xff1a;配置信任服务器证书&#xff1a;注意事项&#xff1a; 生成连接字符串程序运行报错问题解决 总结 背景 Gridview配置数据源之后&#xff0c;程序报错 过…...

【Next.js 入门教程系列】08-发送邮件

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c; 给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 入门教程系列】07-身份验证 发送邮件 Setting Up React Email​ React Email 是一个高效便捷的 E…...

Echarts合集更更更之树图

实现效果 写在最后&#x1f352; 源码&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云...

线性代数 行列式

一、行列式 1、定义 一个数学概念&#xff0c;主要用于 线性代数中&#xff0c;它是一个可以从方阵&#xff08;即行数和列数相等的矩阵&#xff09;形成的一个标量&#xff08;即一个单一的数值&#xff09; 2、二阶行列式 &#xff0c;像这样将一个式子收缩称为一个 2*2 的…...

Ubuntu 通过 Docker 搭建 GitLab

准备工作 1.&#xff09;更新软件。确保你的系统是最新 sudo apt update sudo apt upgrade -y 2.&#xff09;安装 Docker 和 Docker Compose。 参考&#xff1a;Ubuntu 上安装 Docker-CSDN博客 1. 创建 GitLab 目录 创建一个用于存储 GitLab 数据和配置的目录&#xff1…...

原来CDC数据同步可以这么简单,零代码可视化一键数据同步

当前企业实时同步与分析场景中面临的挑战&#xff1a; 随着业务发展需要&#xff0c;实时分析成为企业目前的强需求&#xff0c;成为支撑企业业务发展的必须项。 一般来说&#xff0c;要满足数据实时分析的诉求&#xff0c;通常有两种方案&#xff1a; 第一种是直接使用源端…...

Ubuntu环境使用 Whisper 与 ZhipuAI 实现本地批量视频转录与文本标点复原(本地亲测可用)

使用 Whisper 与 ZhipuAI 实现批量视频转录与文本标点添加 在本篇博客中&#xff0c;我们将介绍一个实用的项目&#xff0c;帮助初学者了解如何使用 Whisper 和 ZhipuAI 的 API 来进行视频转录和文本处理。这个项目主要功能是将视频转录成文本&#xff0c;并利用大语言模型为转…...

SPI机制

一、SPI简介 SPI&#xff08;Service Provider Interface&#xff09;机制是一种服务发现机制&#xff0c;广泛用于Java生态中。它允许框架或库通过接口解耦具体实现&#xff0c;用户可以在运行时动态地提供接口的实现&#xff0c;而不是在编译时确定。这种机制在很多场景下非…...

生信分析流程:从数据准备到结果解释的完整指南

介绍 生物信息学&#xff08;生信&#xff09;分析是一个复杂的过程&#xff0c;涉及从数据准备到结果解释的多个步骤。随着高通量测序技术的发展和生物数据的迅猛增长&#xff0c;了解和掌握生信分析的标准流程变得尤为重要。这不仅有助于提高分析的准确性&#xff0c;还能优…...

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…...

【fisco学习记录2】多群组搭建

说明 文档参考&#xff1a; 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前&#xff0c;先暂停之前的单群组&#xff0c;并删除&#xff1a; cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...