c语言的几点复习

C语言期末复习|最后的总结 在 C 语言中,自定义标识符是由程序员为变量、函数、结构体、联合体、枚举、宏、标签等命名时使用的名称。1.大小写字母含义不同。APH 和 aph 代表不同的变量。2.C语言的标识符由字母、数字和下划线组成。3.第一个字符必须是字母或下划线。4.第一个字符不能是数字。9ab是非法的用户标识符。5.C语言中的变量名属于标识符。6.C 语言的关键字(保留字)是具有特殊含义的标识符,它们被 C 语言的编译器保留,不能用作变量名、函数名等普通标识符。7.main。 阅读详情

语言的几点复习

http://www.cnblogs.com/chio/archive/2007/11/16/962163.html

1. 数字表示

整数:

浮点数:

2.  static, extern, auto, register, volatiate

2.1 变量

存储方式:

静态存储

动态存储

栈stack 
堆heap 
静态数据区数据段.data
 未初始化数据段.bss
程序段.text

 

数据段和未初始化数据段组成了静态存储区

堆、栈组成了动态存储区

一般情况下,全局变量、static局部变量都位于静态存储区

非static的auto变量、函数调用时的现场保护和返回地址位于栈,而动态分配的空间位于堆

一。局部变量

1. auto变量

隐含为自动存储类别,属于动态存储。auto关键字可省略

2. static声明的局部变量,或静态局部变量

属于静态存储,在函数调用结束后仍然存在

但是注意:虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的

3. register声明的局部变量

只有局部auto变量和形式参数可以作为寄存器变量。局部静态变量不能作为register变量

二。外部变量(或全局变量)

1。一个文件内声明的外部变量

例:

main()
{
    extern A, B;
    printf("%d", A);
}
 
int A=1, B=-8;

2. 在多个文件中声明外部变量

作用:扩展外部变量的作用域

//file1.c
int A;
 
main()
{
    //...
}

 

//file2.c
extern A;
power(int n)
{
    //..
}

3. static声明的外部变量

作用:将外部变量的作用域只限于该文件引用,而不能被其他文件引用。

//file1.c
static int A;
main()
{
    //...
}
//file2.c
extern A;
fun(int n)
{
    A=A*n;
    //...
}
//error: file2.c cannot use the A, although declare it as extern

 

三。变量和声明的区别:

对于函数:区别很明显

函数的声明是函数的原型

函数的定义是包含有函数体,即函数的实现

对于变量:

广义的声明,包含定义,分为定义性声明(defining declaration)和引用性声明(或非定义性声明,reference declaration)

狭义的声明,即指非定义性声明

定义性声明指需要建立存储空间,而引用性声明不需要建立存储空间

一般为了叙述方便,把建立存储空间的声明称为定义,而把不需要建立存储空间的声明称为声明。显然,这里的声明是狭义的,即非定义性声明

2.2 函数

1. 内部函数

如:

static int fun(int a, int b)
{
    //...
}

使用内部函数,可以使函数只局限于所在文件

2. 外部函数

1) 如:

extern int fun(int a, int b);

这样,函数fun就可以在其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。

2) 在需要调用此函数的文件中,用extern声明所用的函数是外部函数。此extern也可以省略,而只写函数原型

 

总结:

从作用域角度分,有局部变量和全局变量

  • 局部变量
    • 自动变量,即动态局部变量(离开函数,值就消失)
    • 静态局部变量(离开函数,值仍保留)
    • 寄存器变量(离开函数,值就消失)
  • 全局变量
    • 静态外部变量(只限本文件引用)
    • 外部变量(即非静态的外部变量,允许其他文件引用)

从变量生命期分,有动态存储和静态存储

  • 静态存储
    • 静态局部变量(函数内有效)
    • 静态外部变量(本文件内有效)
    • 外部变量(其他文件可引用)
  • 动态存储
    • 自动变量(函数内有效)
    • 寄存器变量(函数内有效)

3 联合体union

定义联合体和联合体变量

如:

union sa_union
{
    int i;
    char ch;
    float f;
}a, b, c;

但是注意:不能引用联合体变量,只能引用联合体变量中的成员,如a.i, b.ch, c.f

printf("%d", a);
//error!!!

1)每个瞬时只能存放其中一种,不能同时起作用

2)联合体变量中起作用的成员是最后一次存放的成员,存入一个新的成员后原来的成员就失去了作用

3)联合体变量的地址和它的各成员的地址都是同一地址,例如&a, &a.i, &a.c, &a.f都是同一地址值

4)以下都是错误的:

  • 引用联合体变量名得到一个值,但可以使用联合体变量的指针
  • 在定义联合体变量是对它初始化
  • 将联合体变量作为函数参数
  • 使函数返回联合体变量

4 结构体与位域

C语言中允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位域”

struct packed_data
{
    unsigned a:2;
    unsigned b:6;
    unsigned c:4;
    unsigned d:4;
    int i;
}data;

a, b, c, d一共占2字节,i占4字节

sizeof(data)=8

struct packed_data
{
    unsigned a:2;
    unsigned b:3;
    unsigned c:4;
    int i;
}data;

1. 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。例如: 
struct bs
{
 unsigned a:4
 unsigned :0 /*空域*/
 unsigned b:4 /*从下一单元开始存放*/
 unsigned c:4
} 
  在这个位域定义中,a占第一字节的4位,后4位填0表示不使用,b从第二字节开始,占用4位,c占用4位。
  2. 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。
  3. 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。例如: 
struct k
{
 int a:1
 int :2 /*该2位不能使用*/
 int b:3
 int c:2
}; 
  从以上分析可以看出,位域在本质上就是一种结构类型, 不过其成员是按二进位分配的。

C语言期末考试-复习错题 东莞城院的C语言考试复习资料和考试样题 https://pan.baidu.com/s/18xDvW1DM6z-Wt16rheHeZw hwv0 1:(F)计算机能直接执行机器指令和汇编指令但不能直接执行高级语言中的语句 机器只能运行机器语言 2:(F)一个C语言程序由一个或多个函数组成,其中至少必须包含一个main函数 ... 阅读详情

相关推荐

C语言期中复习训练

1.以下程序中printf("x");执行的次数是:(5) #include <stdio.h> int main() { int x=0,y=10; while(x<y) { x++;y--; printf("x"); } return 0; } 2.以下程序在运行时输入234,则程序的运行结果是:(44556) void main() { int c; while((c=getchar())!='\n') {

minghaibuai的博客 2637

C语言程序设计 | 大小端

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。...

khh1014173041的博客 4437

【C语言】C语言期末复习

大学生C语言期末考试复习资料

2302_81115588的博客 2229

【C语言】 知识点汇总--基础知识点梳理(超全超详细)

目录一、从源代码到exe二、基本数据类型三、字符在屏幕上的显示原理四、溢出现象五、类型转换规律六、短路问题七、指针变量类型的作用 八、指针类型的扩展——多级指针九、指针类型的扩展——指针数组十、指针类型的扩展——数组指针十一、一维数组-名-特性十二、二维数组-名-特性十三、大端存储-小端存储十四、函数在源代码中的三种状态十五、堆区与栈区的区别十六、函数的执行原理十七、枚举类型十八、typedef二十、const二十一、全局/局部变量生命周期与作用域二十二、static静态变量二十三、extern二十四、宏d

jia_03的博客 2万+

【密码专栏】超强进阶:PLONK VS Groth16(上)

前言 前文《天冷了,干了这碗“零知识证明”鸡汤》对「零知识证明学习」作了一个形象化的比喻:炖鸡汤。那么本系列的主要内容可以简单概括为《论高压锅炖鸡汤的一百种方法》之方法二。在学会了“清炖鸡汤”之后,不如来一口“阿胶鸡汤”补补脑细胞吧! 正如鸡汤不同风味之间各具千秋,不同的zk-SNARK方案也各有所长。zk-SNARK方案可以被分为【通用】与【非通用】zk-SNARK,PLONK与Groth16分别是其中的典型代表。通过本系列,我们将对PLONK算法内容作简要介绍,并指出PLONK和Groth16算法思路上

Hyperchain的博客 1805

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3971

C语言复习

C语言复习笔记1 一、数据类型、运算符与表达式 1.常量与变量 (1)常量分为:整型常量、实型常量、字符常量、字符串常量和符号常量。如:15是整型常量,3.14159是实型常量,‘a’是字符常量,"abc123"是字符串常量. (2)变量是指在程序运行过程中其值可以改变的量. 2.整型常量 (1)三种形式: 十进制:以非0开始的数,数码取值范围是0~9,可以是正数、负数,如25、-36、+23等。 八进制:以0开始的数,数码取值为0~7,如037、0123等。 十六进制:以0x或0X开始的数,数码取值为0~

yrr999的博客 3083

重磅!AI实时读取总结微信聊天记录,附MCP协议+智能体配置教程!

【摘要】本文介绍了一套AI实时分析微信聊天记录的解决方案,通过Chatlog+Trae+MCP协议实现智能整理群聊信息。Chatlog作为开源工具本地解析微信数据,确保隐私安全;Trae提供AI分析能力,支持自然语言处理。操作步骤包括:1)下载运行Chatlog并启动HTTP服务;2)安装Trae配置MCP协议;3)创建智能体设置提示词。该方案虽需初始配置,但能有效解决群聊信息过载问题,自动提炼关键内容,避免有价值信息被淹没。文中提供了详细教程链接和网盘资源。

puyihuan的博客 1万+

C语言复习 -- 知识点总结(全)

C语言的知识点以及以往的博客进行了总结,方便复习

MonologueYY的博客 8803

华为2288H V5服务器断电后‘趴窝’?别慌,手把手教你用SmartKit+BMC修复工具搞定

本文详细介绍了华为2288H V5服务器在断电后无法启动的修复方法,通过SmartKit和BMC修复工具进行故障诊断与修复。文章提供了从工具获取、安装到具体修复流程的完整指南,帮助运维人员快速恢复服务器运行,并给出了后续加固与预防措施,确保服务器稳定运行。

weixin_30575517的博客 297

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

c语言知识总结(适合期末复习,初学入门,专升本备考)

提示:全网最全c语言基础知识总结 **C语言基本知识大全**开篇一、程序设计与c语言二·、算法三、顺序结构设计四、选择结构程序设计五、循环结构设计六、数组与字符串七、函数八、指针九、用户建立自己的数据类型十、位运算十一、文件的输入输出完结散花 开篇 提示:这里可以添加本文要记录的大概内容: 程序结构有三种:顺序结构 循环结构 选择结构 计算机的数据在电脑中是以二进制形式保存的,数据存放的位置就是ta的地址,地址是十六进制的 bit是位,指0或1。byte是字节,一个字节=八个位 描述算法有三种常用的.

阿晨的博客 9143

4、机器人建模、规划与控制及运动学知识解析

本博客深入解析了机器人建模、规划与控制的核心内容,涵盖运动学与动力学的基本原理,并结合典型应用场景探讨了移动机器人与操作器的控制策略。同时,博客还介绍了机器人技术的发展趋势及其在工业和服务领域的广泛应用。

desk3的博客 124

C语言的几点复习

1. 数字表示 整数: 浮点数: 2.  static, extern, auto, register, volatiate 2.1 变量 存储方式: 静态存储 动态存储 栈stack   堆heap   静态数据区 数据段.data   未初始化数据段.bss 程序段 .text   数据段和未初始化数据段组成了静态存储区 堆、栈组成了动态存储区 一般情况下,全局变量、static...

weixin_34153893的博客 146

导数与微分在 FPS 射击游戏中的实际应用:把“手感”算出来

摘要:射击游戏开发中,单线程适用于简单小游戏(如单机打靶),所有任务由主线程顺序处理,代码简单但效率较低;多线程则适合复杂场景(如多人在线3D大作),通过渲染、逻辑、网络、音效等线程分工协作,确保画面流畅、响应迅速和实时同步。选择依据取决于游戏复杂度、联网需求和性能要求,小型游戏用单线程,大型高要求项目必须采用多线程架构。(149字)

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 3278

SQL基础:HQL之常用的行列转换应用总结

行列转换是数据开发者的基本技能,也是面试重点,在数据开发中处处可见,本文对常见的几种情况进行了总结,包括了多行转多列,多行转单列,多列转多行,单列转多行的几种情况,并给出了解决思路和方法,读者可根据本文给出的思路灵活应对业务中遇到的问题。

石榴姐yyds 1800

C语言复习(专升本复习)

一个简单的C语言程序前言一、一个简单的C语言程序1.什么是C语言程序2.C语言的基本结构3.注意点 前言 提示:用于复习和分享c语言内容 因为要备考所以java暂时不更新建议看完c再去看java 所有顺序是按井冈山大学专升本复习大纲复习 提示:以下是本篇文章正文内容,下面案例可供参考 一、一个简单的C语言程序 示例: #inculde<stdio.h> void mian { //输出一句话 printf("hello word"); system("pause

qq_46567882的博客 4083

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

专升本C语言——资料复习大全(需要完整版请私信作者)

【解析】结构化程序主要由3种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用,完全按照步骤的原有次序依次执行,B选项叙述正确。【解析】C编译程序把文件后缀为C的源程序文件编译成文件后缀为.obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序.exe,故排除B、C、D项,答案选择A选项。故选项A、D说法正确。

Cherry的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

快速复习C语言(1)

文章详细记录了C语言的基础知识点,帮助我们快速复习C语言易错易混淆的知识

2301_76192068的博客 1563

C语言复习笔记(一)C语言概论初识

从今天开始没有复习c语言的要抓紧时间了哦,如果不会复习的话,不妨跟着我一起来复习吧,现在小编已经结课了,反正闲着也是闲着,所以小编想用五天时间对c语言做一个系统性复习。欢迎大家一起来学习,互相指正,互相进步哦!加油,干就完了,奥利给!!! 不bb了,直入正题 第1章 C语言概论初识 (温馨提示,如果你看起来毫不费力,你就已经是大佬了哦,如果有些吃力,那就赶紧抓紧时间再学一遍吧,这个复习不针对小白哦) 最简单的C语言程序 【例1.1】要求在屏幕上输出:机械电子工程 解题思路: 在主函数中用printf函数原样

royal_77QAQ的博客 1588

PTA—C语言期末复习(选择题)

本篇文章收集了25道c语言程序设计的重点、常考选择题,供大家期末考试复习!

小谷同学的博客 2559

简单复习C语言

今天开始看晴神的《算法笔记》,由于本人大一学习完C语言后,一直在学习和使用Cpp的语法,以致于一些C语言的一些简单问题都不记得了,就顺便简单复习下C语言吧。 1.变量类型 _int16,_int32,_int64对应short,int,long long。 %f尽管是double和float的输出格式,但是可以将double的输出格式写出%lf 还有一点尽量多使用double,不要使用float,...

algsup 1216

【C语言】C语言复习笔记

为什么要学C语言? 1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。 总所周知,任何东西的盛行都只是一个阶段,语言也是如此。但是,C语言是个例外,一个矗立了半个世纪的语言,其中好坏,我想应该不难了之。 C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖.

Cain Xcy的博客 2010
上一篇: 最简单的SVN (subversion)的配置
下一篇: grub
nevercgoodbye
博客等级 码龄18年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值