牛逼大神整理的C语言基础知识,你确定你不码下来?

本文深入解析C语言的基本概念,包括软件构成、数据结构、算法特点及C语言的应用领域。详细介绍C语言规则,包括关键字、标识符、变量、常量及基本数据类型如int、float、double和char的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件是将一组程序组织起来

每个程序由一组指令组成

数据结构+算法

数据结构

在程序中要指定数据的类型和数据的组织形式。

算法(程序的灵魂)

就是为了解决实际问题而提出的具体方法与步骤.

算法的特点

有穷性: 一个算法一定是有限的步骤.

确定性: 每一个步骤都是确定的,不是含糊的.

有零个或多个输入: 指在执行算法时需要从外界取得必要的信息.

有一个或多个输出: 目的是为了求解,”解”就是输出

有效性: 每一步都应当有效的执行,并得到确定的结果

C 语言的应用领域

C 语言最初用于系统程序设计

系统程序是计算机操作系统或操作系统支持的实用程序的组成部分: 操作系统、解释器、编辑器以及汇编器通常称为系统程序

UNIX 操作系统是用 C 语言开发,有许多种 C 编译器,可以满足几乎所有类型 PC 的需要

C语言的特点

C语言同时具有汇编语言高级语言的优势。

(1)语言简洁、紧凑,使用方便、灵活。

(2)运算符极其丰富。

(3)生成的目标代码质量高,程序执行效率高。

(4)可移植性好(较之汇编语言)。

(5)可以直接操纵硬件。

C语言规则

C语言有32个关键字 这些关键字结合惯用语法构成了 C程序设计语言 ,所有用C语言编写的程序必须遵守的规则,所有关键字使用小写形式 C语言是区分大小写的,int 和 INT 不同,关键字不能用作变量名或函数名

程序执行总是先调用main()函数

每个程序必须有一个而且只能有一个称作主函数的main()函数; main()函数后面必须跟有圆括号。括号内可以有参数可以没有参数。

所有函数名后必须跟一个左大括号{ 表示代码块开始。同样,右大括号 }表示代码块的结束。

大括号之间写处理问题的代码。除了在函数中,在循环语句、判断语句等其他语句情况下也必须使用大括号{}。

代码语句的结束用分号;表示。编译器无法识别回车、空格,每条语句只能以分号结束,同一行中可以有多条语句。

注释是用于描述命令、函数或整个程序。

它有两种形式“多行注释”和“单行注释”。

多行注释部分包含在“/*”和“*/”之间, 在编译时它被 C编译器忽略。

单行注释则在 // 后面,在编译时它被C编译器忽略。

牛逼大神整理的C语言基础知识,你确定你不码下来?

常量

常量就是一个保持不变的值,而且不可能被改变

示例

5 数字/整型常量

5.3 数字/实型常量

''Black'' 字符串常量

'C' 字符常量

什么是变量?

变量是储存信息的地方.

变量是内存中的一个地址

在地址中可以进行数据的存储和读取

示例:变量

BEGIN

DISPLAY ‘Enter 2 numbers’

INPUT A,B

C=A+B

DISPLAY C

END

A 、B和C是伪代码中的变量

*变量类型(如整型)告诉编译器给变量分配

多大的内存

操作系统负责记住变量在内存中的地址

要引用内存空间中的值,只需指定变量名

标识符

用来标识变量名、符号常量名、函数名、数组名、类型名、文件名和其他各种用户定义的对象的名称都称为标识符

标识符的长度可以是任何合适的数值,但是各种编译器能够识别的变量中的字符数目有所不同,见意不要超过8个字符(VC环境)

C 语言中的标识符区分大小写

标识符的命名规则

变量名应该以字母或下划线开头

第一个字符后面可以跟字母、数字或

应该避免使用专有名词来命名变量

应该避免使用可能引起混淆的字母

变量名区分大小写

编写程序时应该遵循一些标准的变量命名约定

变量名应该是有意义的而且是描述性的

标识符命名的良好习惯──见名知意:

通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。

关键字

在一个特定语言的上下文中有特殊意义的单词

所有的数据类型都是保留的关键字

在指定变量名的同时还要指定将要存储在其中的数据类型-变量声明

C语言关键字

auto break case char const

continue default do double else

enum extern float for goto

if int long register return

short signed sizeof static struct

switch typedef union unsigned void

volatile while

基本数据类型

int

float

double

char

void

int 类型

存储数字数据

声明方式:int num;

不能存储类似于“Alan” 或“abc”等任何其他类型的数据

*分配16 位(2 个字节)的内存空间,整数的范围是从 - 32768 到 32767

(注意:在我们当前环境里,int占用4个字节)

 示例:12322、0、-232

如: int num = 12332;

float 类型

存储整数或包含小数位的值

声明方式:float num;

最高精度是 6 位

*分配32 位(4 个字节)的内存空间

 示例:23.05、56.5、32

如: float num = 23.05;

double 类型

存储超出float类型大小的限制的值

声明方式: double num;

最高精度是 10 位

*分配64 位(8 个字节)的内存空间

示例:23.34232324

如: double num = 23.34232324;

char 类型

存储一个字符信息

声明方式: char gender;

gender='M';

*分配8位(1 个字节)的内存空间

示例:'a'、'm'、'$'、'%'、'1'、'5'

如: char gender = ‘A’;

[注意] 给字符型变量赋值必须加上一对单引号‘’

字符型变量 C

char 与 int的联系

字符在计算机中是以ASCII来存储的,

字符变量在内存中的值是ASCII表中对应的整数

void 类型

告诉编译器没有任何类型的值

声名方式:void num

不返回任何值

派生数据类型

通过修改四种基本数据类型以适应不同的

情况而产生的数据类型叫做派生数据类型

signed 和 unsigned 类型

signed最重要的是修改char数据类型(缺省为signed )

(0-127)有符号的, 有正负之分的

unsigned 类型指定变量只能接受正值

unsigned int varNum;

varNum=63123;

加上unsigned前缀,正数的取值范围是原来的两倍

修饰符可以与 int 和 float 数据类型一起使用

unsigned int 支持的范围是从 0 到 65535

long 和 short 类型

要求某个整数的长度比正常长度更长或更短时,使用long 和short

* short int 占 8 位(1 个字节)的内存空间

允许的数字范围是从 -128 到 127

* long int 占 32 位(4 个字节)的内存空间

-2,147,483,648 到 2,147,483,647

* long double 占 128 位(16 个字节)的内存空间

数据类型范围 2-1

类型 *近似大小(位) 最小范围

char 8 -128 到 127

unsigned char 8 0 到 255

signed char 8 -128 到 127

int 16 -32,768 到 32,767

unsigned int 16 0 到 65,535

signed int 16 与 int 相同

short int 8

unsigned short int 8 0 到 65, 535

signed short int 8 与 short int 相同

signed short int 8 与 short int 相同

long int 32 -2,147,483,648 到 2,147,483,647

signed long int 32 0 到 4,294,967,295

unsigned long int 32 0 到 4,294,967,295

float 32 六位精度

double 64 十位精度

long double 128 十位精度

 

最后小编有彩蛋哦~

给大家准备了一份免费的C语言学习课程,赶紧来领取吧!

<think>嗯,用户想自学成为互联网大神,需要一份准确的学习方法和思路。首先,我得理解“互联网大神”具体指什么。可能是指技术大牛,比如全栈工程师,或者是产品经理、数据分析师之类的。用户没有明确说明,可能需要进一步询问,但根据常见情况,可能偏向技术方向。 接下来,用户是自学,所以需要系统化的学习路径。得考虑从基础开始,分阶段推进,每个阶段的关键知识点和资源推荐。同时,学习方法也很重要,比如项目实践、理论结合实践、持续学习等。 要确保回答结构清晰,分步骤说明。可能需要分为几个阶段:计算机基础、编程语言、前端/后端开发、数据库、框架与工具、系统设计、项目实战、持续提升等。每个阶段要列出关键内容,推荐资源,以及注意事项。 还要注意用户可能需要时间管理建议,如何保持动力,遇到问题怎么解决。资源方面,要推荐免费和优质的,比如在线课程平台、书籍、开源项目等。同时,强调实践的重要性,避免只学理论。 另外,用户可能对就业或实际应用感兴趣,所以项目实战和参与开源部分很重要。最后,持续学习的方法,比如关注行业动态、参加社区、构建知识体系,这些都需要涵盖进去。 需要检查是否符合之前的系统指令,比如数学公式的格式,但这个问题可能涉及太多数学内容,过如果有的话,要确保正确使用$$...$$。另外,用中文回答,结构清晰,分点说明,确保可靠性和实用性。 可能还需要提醒用户自学需要坚持,设定明确目标,避免贪多嚼烂。强调基础的重要性,要跳过基础知识直接学框架或工具。最后,鼓励用户保持好奇心和解决问题的能力。</think>以下是为您量身定制的互联网技术自学路线,采用分阶段渐进式学习框架,结合关键知识点与实战建议: ### 一、基础筑基阶段(3-6个月) $$ \text{知识体系} = \text{计算机原理} \oplus \text{网络基础} \oplus \text{编程范式} $$ 1. **计算机原理** - 二进制/十六进制转换 - 操作系统进程/线程管理(推荐《现代操作系统》) - 内存管理机制与缓存原理 2. **网络基础** - TCP/IP协议栈分层模型(物理层→应用层) - HTTP/HTTPS协议规范(RFC文档精读) - RESTful API设计原则 3. **编程入门** - Python语法精要(列表推导式、装饰器等) - JavaScript原型链与事件循环机制 - 算法复杂度分析(时间复杂度/空间复杂度) ### 二、技术纵深阶段(6-12个月) $$ \forall t \in \{\text{前端},\text{后端}\}, \exists \text{技术栈}(t) $$ 1. **前端技术栈** - React/Vue框架源解析(虚拟DOM实现原理) - Webpack构建优化策略(Tree Shaking原理) - 浏览器渲染引擎工作原理(关键渲染路径优化) 2. **后端技术栈** - 微服务架构设计(服务发现、熔断机制) - 分布式系统CAP定理验证 - 消息队列实现原理(Kafka日志存储结构) 3. **数据库体系** - MySQL索引B+树结构推导 - Redis持久化机制对比(RDB vs AOF) - 分布式事务解决方案(两阶段提交协议) ### 三、系统架构阶段(持续进阶) $$ \lim_{经验 \to \infty} 架构能力 = \int_{项目}^{时间} 设计模式 \cdot 复杂度控制 $$ 1. **架构设计原则** - 高并发系统设计(C10K问题解决方案) - 容灾与降级策略(混沌工程实践) - 服务网格技术(Istio流量管理) 2. **工程化实践** - CI/CD流水线设计(GitLab Runner配置) - 监控系统搭建(Prometheus + Grafana) - 云原生技术栈(Kubernetes调度算法) ### 四、持续进化机制 1. **知识获取矩阵** | 渠道类型 | 推荐资源 | 学习频率 | |----------------|-----------------------------------|----------| | 深度阅读 | 《设计数据密集型应用》 | 每周5h | | 技术社区 | GitHub Trending、掘金技术社区 | 每日0.5h | | 前沿追踪 | InfoQ架构案例、KubeCon演讲 | 每周2h | 2. **实践验证闭环** ```mermaid graph LR A[开源项目贡献] --> B[技术博客输出] B --> C[方案原型验证] C --> D[生产环境部署] D --> A ``` ### 五、认知升级策略 1. **复杂问题拆解公式** $$ 问题复杂度 = \sum_{i=1}^{n} (模块耦合度 \times 数据规模) $$ - 使用DDD领域驱动设计进行业务建模 - 运用混沌工程进行系统脆弱性检测 2. **技术决策框架** - 技术选型评估矩阵(成熟度/社区活跃度/团队适配度) - 架构演进路线图设计(单体→微服务→Serverless) 建议每日保持3小时深度学习(推荐《Deep Work》工作法),配合周度技术复盘。初期可参与Google Summer of Code等开源项目,后期建议构建个人技术影响力矩阵(技术博客+GitHub项目+会议演讲)。 此路线需根据个人认知节奏动态调整,重点培养第一性原理思维与技术本质洞察力。记住:$$ \frac{d(\text{技术能力})}{dt} = \text{刻意练习} \times \text{认知深度} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值