C的期末总结需复习的知识点

1  宏定义的定义

若有宏定义:#define S(a,b) t=a;a=b;b=t 由于变量t没定义,所以此宏定义是错误的。

T                    F

这个是错误,因为宏定义是无类型的变量

2  预处理的写法 

C语言中的预处理命令都以“#”开头。

T                      F

这个是正确的,需要记住 

3   预处理的操作之一

C语言中,编译预处理后,所有的符号常量名和宏名都用相应的字符串替换。

T                        F

这个是正确,因为预处理有这个操作,把常量和宏名都进行字符串替换

4  预处理与编译

#define ADD(X,Y) X+Y 的效果完全等同于定义一个函数ADD(X,Y)

T                             F 

这个是错误,因为宏是在预处理阶段进行的,进行了简单的文本替换,但是函数是在编译进行的,进行复杂的操作,比如检查类型是否匹配,还有周期也不一样,宏的周期是全局,但是函数是由明确的周期的

5  预处理编译指令和c语句 

 #include <stdio.h>是一条编译预处理命令 。

T                F

#define PI 3.1415926是一条C语句。

T                F

第一是正确   第二是错误,只要带#都是预处理指令

6  宏的类型

宏定义不存在类型问题,宏名无类型,它的参数也无类型。

T                       F 

这个是正确的,宏就是没有类型的

 7  宏的写法

有以下程序,程序运行后的输出结果是()。

#define P 3
#define F(int x){return (P*x*x);}

int main()
{     printf("%d\n",F(3+5));
      return 0;
}

A.

192

B.

29

C.

25

D.

编译出错

这个是编译出错,因为宏在预处理阶段没有返回这个操作,也就是无法使用编译里面的返回值操作

 8 结构体的定义

以下选项中,能定义s为合法的结构体变量的是______。

A.

typedef  struct  abc
{  double a;
   char b[10];
} s;

B.

struct
{  double a;
   char  b[10];
}s;

C.

struct  ABC
{  double a;
   char b[10];
} ;
ABC s;

D.

typedef  ABC
{  double a;
   char b[10];
} s;

 A和D肯定都是错的,C的ABC前面要加struct,要不然就就要用typedef来定义一遍才可以这么写

9  全局变量的作用域

文件中定义的全局变量的作用域为()。

A.

本程序全部范围

B.

本文件全部范围

C.

函数内全部范围

D.

从定义该变量的位置开始到本文件结束

这个是选择D   因为第一题要加上extern才可以,因为要在别的文件,使用要声明这个在外部文件才可以

10  函数的作用域

在一个C源程序文件中,如要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。

A.

extern

B.

register

C.

auto

D.

static

在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,需要使用static存储类别。使用static修饰的全局变量具有内部链接性,其作用域被限制在定义它的源文件内,其他源文件无法访问该变量。而extern用于声明外部变量,registerauto一般用于局部变量

11  程序环境 

以下说法错误的是:

A.

一个C语言源文件(.c文件)可以不包含main函数

B.

一个C语言工程(Project)可包含多个源文件(.c文件),即使这些源文件都编译成功,这个C工程也有可能链接失败

C.

C语言头文件(.h文件)和源文件(.c文件)都可以进行编译

D.

在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次

这个题选C,因为头文件是直接插入的,然后不进行编译

A这个可以不包含main函数,写过面向对象都知道

B这个如果有不同文件出现重命名,可以编译成功,但是链接会出现问题

D这个是对的,函数的声明(原型)可以出现多次,只要这些声明是一致的

12  全局变量与局部变量重命名 

在一个函数中如局部变量和全局变量同名,则_________________。

A.

局部变量屏蔽全局变量

B.

全局变量屏蔽局部变量

C.

全局变量和局部变量都不可用

D.

程序错误

这个选A,在一个函数中,如果局部变量和全局变量同名,那么在该函数的作用域内,局部变量会屏蔽全局变量。这意味着在函数内部,对这个变量的引用将指向局部变量,而不是全局变量。全局变量在该函数的作用域外仍然可以正常使用。这种现象称为“变量屏蔽”或“名称隐藏”,这种现象在多种编程语言中都存在,例如C语言、Go语言、Rust语言等。

13  自定义结构体占用内存情况

结构体类型本身不占用内存空间,结构体变量占用内存空间。

T                         F 

这个是正确,因为结构体类型就是一个类型罢了

14  结构体的组成

结构体成员的类型必须是基本数据类型。

T                       F

这个是错误,因为组成里面可以实现结构体嵌套

15  结构体类型的写法

在定义结构类型时,关键字struct和它后面的结构名共同组成一个新的数据类型名。

T                             F

这个是正确,因为只有在typedef重新命名结构体才可以实现这个只用名字,其他情况要加struct

16  结构体的运算符

在对结构变量操作时,.被称为成员或者分量运算符。

T                                  F

这个是正确

17  联合

共用型变量分配内存单元,其长度为所有成员中最长的成员的数据长度。

T                                 F 

这个是正确

18  联合的使用

以下的C语言句法应用是非法的。
union data{ int i;char ch;float f;}a={1};

T                                   F 

这个正确的,定义一个联合体a的变量,然后对i进行初始化

19  结构体指针

有以下结构体说明、变量定义和赋值语句,则以下scanf函数调用语句有错误的是

 struct STD         
 { char  name[10];         
   int  age;             
   char  sex;             
 } s[5],*ps;         
 ps=&s[0];

A.

scanf("%c",&(ps->sex));

B.

scanf("%d",ps->age);

C.

scanf("%s",s[0].name);

D.

scanf("%d",&s[0].age);

这个选择B,为易错题,这个结构体指针的结构写法,是直接返回这个值的,我们还要利用&这个符号来取这个东西的地址

20  结构体初始化

根据下面的定义,能打印出字母M的语句是()。

struct person{
  char name[10]; 
  int age; 
} c[10] = { "John", 17, "Paul", 19, "Mary", 18, "Adam", 16 };

A.

printf("%c", c[3].name);

B.

printf("%c", c[3].name[1]);

C.

printf("%c", c[2].name[0]);

D.

printf("%c", c[2].name[1]);

这个题目主要看这个双引号,选择C

21  union的初始化与赋值

若有定义union data {char ch;int x;} a;下列语句中( )是不正确的。

A.

a={'x',10}

B.

a.x=10;a.x++;

C.

a.ch='x';a.ch++;

D.

a.x=10;a.ch='x';

union的初始化是一次只可以初始化一个的,不可以同时初始化多个,所以A是错误的

初始化 union 的规则

  1. 只能初始化第一个成员

    • 当你初始化一个 union 时,只能初始化它的第一个成员。其他成员的值将是未定义的
  2. 后续成员的值是未定义的

    • 由于 union 的所有成员共享同一块内存,初始化第一个成员后,其他成员的值将是未定义的

这里的D是易错的

选项 D: a.x=10;a.ch='x';

这个选项在语法上是正确的,但在逻辑上可能会导致误解。虽然 a.x=10;a.ch='x'; 这两行代码在语法上没有问题,但它们实际上是两个独立的操作,而不是同时初始化 union 的两个成员,这里并不是初始化,而是赋值操作,初始化和赋值是不一样的

22  枚举的定义

以下枚举类型的定义中,正确的是()。

A.

enum a={one,two,three};

B.

enum a{one=9,two=-1,three};

C.

enum a={"one","two","three"};

D.

enum a{"one","two","three"};

选择B

在C语言中,枚举类型(enum)的定义格式如下:

enum enum_name {
    enumerator1 = value1,
    enumerator2 = value2,
    ...
} variable_name;
  • 枚举名enum_name)是可选的。
  • 枚举器enumerator)是枚举类型的成员。
  • value)是可选的,如果不指定值,编译器会自动为枚举器分配一个整数值,从0开始递增。

A. enum a={one,two,three};

这个定义是错误的,因为枚举类型的定义应该使用大括号 {} 而不是等号 =

B. enum a{one=9,two=-1,three};

这个定义是正确的。它明确指定了 one 的值为 9,two 的值为 -1,three 的值将自动递增为 0(因为 two 的值为 -1,下一个值将是 -1 + 1 = 0)

C. enum a={"one","two","three"};

这个定义是错误的,因为枚举类型的成员应该是标识符,而不是字符串字面量

D. enum a{"one","two","three"};

这个定义是错误的,原因同选项 C,枚举类型的成员应该是标识符,而不是字符串字面量

 23  指针加减操作 

关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相加、相减。

T                    F

错误,可以减和加常数和减常熟,由于加指针无实际意义所以没有定义,乘除都是不行的

相同类型的指针可以相减,结果是两个指针之间的元素个数。例如,如果 p1 和 p2 是相同类型的指针,p1 - p2 会返回它们之间的元素个数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

欧拉路径算法

欧拉图&#xff1a; 对于应该连通图G&#xff0c;有&#xff1a; 1欧拉路径&#xff1a;一条路径&#xff0c;它能够不重复地遍历完所有的边&#xff0c;这个性质很像不重复地一笔画完所有边&#xff0c;所以有些涉及到欧拉路径的问题叫做一笔画问题。 2欧拉回路&#xff1a…

【C#设计模式(23)——模板方法模式(Template Method Pattern)】

前言 在抽象类中封装算法的结构&#xff0c;具体的实现步骤由子类定义&#xff0c;从而达到不改变算法结构的&#xff0c;允许子类重定义方法内容。代码 public abstract class Teamplate {public void TeamplateMethod(){Step1();Step2();Step3();}protected abstract void …

MyBatis——XML映射文件

在MyBatis中&#xff0c;既可以通过注解的方式配置SQL语句&#xff0c;也可以通过XML映射文件的方式配置SQL语句。对于简单的SQL语句建议直接通过注解的方式配置SQL语句&#xff1a; Delete("delete from user where id#{id}") Integer deleteById(Integer id);但是…

Mysql--运维篇--安全性(数据库访问控制,最小权限原则,表空间加密,TLS加密,证书签发,SQL注入及防范等)

一、数据库访问控制 MySQL的访问控制是确保数据库安全的关键机制之一。通过合理的用户权限管理和访问控制策略&#xff0c;可以防止未经授权的用户访问、修改或删除敏感数据。 1、MySQL访问控制的工作原理 MySQL使用基于用户的访问控制模型&#xff0c;每个用户都有特定的权…

抽奖滚动功能

代码 <template><div class"box"><video class"video" src"../../assets/video/底层.mp4" loop autoplay muted></video><img class"choujiang" src"../../assets/image/抽奖1.png" alt"&…

【Python】Python之locust压测教程+从0到1demo:基础轻量级压测实战(1)

文章目录 一、什么是Locust二、Locust 架构组成三、实战 Demo准备一个可调用的接口编写一个接口测试用例编写一个性能测试用例执行性能测试用例代码1、通过 Web UI 执行&#xff08;GUI模式&#xff09;2、通过命令行执行&#xff08;非GUI模式&#xff09; 小知识&#xff1a;…

Microsoft

Microsoft Word目录1.目录编号与文字的间距设置2. 目录编号缩进设置 Excel函数MID&#xff08;提取字符&#xff09;CONCAT&#xff08;组合字符串&#xff09;EXACT&#xff08;比较字符串&#xff09; PowerPointwindows 11 恢复右键传统菜单 Word 目录 1.目录编号与文字的…

用 Python 处理 CSV 和 Excel 文件

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

JS后盾人--再一次的走进JS?

程序跑起来与避免延迟 如果你讲JS&#xff0c;你就不可能只讲JS 后盾人说开发就要用VScode&#xff08;确实&#xff0c;Windows和Linux都可以跑&#xff09; 然后就是第一天开发的时候装的那些插件 前端访问流程基本分析 托管到服务器上的东西&#xff0c;谁访问下载到谁的…

Android 调用系统服务接口获取屏幕投影(需要android.uid.system)

媒体投影 借助 Android 5&#xff08;API 级别 21&#xff09;中引入的 android.media.projection API&#xff0c;您可以将设备屏幕中的内容截取为可播放、录制或投屏到其他设备&#xff08;如电视&#xff09;的媒体流。 Android 14&#xff08;API 级别 34&#xff09;引入…

PT8M2102 触控型 8Bit MCU

1. 产品概述 PT8M2102 是一款基于 RISC 内核的 8 位 MTP 单片机&#xff0c;内部集成了电容式触摸感应模块、 TIMER 、 PWM、 LVR 、 LVD 、 WDT 等外设&#xff0c;其主要用作触摸按键开关&#xff0c;广泛适用于触控调光、电子玩具、消 费电子、家用电器等领域&am…

LangGraph 教程:初学者综合指南(2)

工具集成 将工具集成到 LangGraph 聊天机器人中可以显着增强其功能&#xff0c;使其能够按照您喜欢的方式访问和处理信息。 让我们修改上一节中创建的基本聊天机器人&#xff0c;以包含一个可以在网络上搜索信息的工具。我们将使用langchain_中community.tools TavilySearchR…

项目练习:若依管理系统字典功能-Vue前端部分

文章目录 一、情景说明二、若依Vue相关代码及配置1、utils代码2、components组件3、api接口代码4、main.js配置 三、使用方法1、html部分2、js部分 一、情景说明 我们在做web系统的时候&#xff0c;肯定会遇到一些常量选择场景。 比如&#xff0c;性别&#xff1a;男女。 状态…

oracle闪回表

文章目录 闪回表案例1&#xff1a;&#xff08;未清理回收站时的闪回表--成功&#xff09;案例2&#xff08;清理回收站时的闪回表--失败&#xff09;案例3&#xff1a;彻底删除表&#xff08;不经过回收站--失败&#xff09;案例4&#xff1a;闪回表之后重新命名新表总结1、删…

TensorFlow Quantum快速编程(基本篇)

一、TensorFlow Quantum 概述 1.1 简介 TensorFlow Quantum(TFQ)是由 Google 开发的一款具有开创性意义的开源库,它宛如一座桥梁,巧妙地将量子计算与 TensorFlow 强大的机器学习功能紧密融合。在当今科技飞速发展的时代,传统机器学习虽已取得诸多瞩目成就,然而面对日益…

K8s数据存储之详解(Detailed Explanation of K8s Data Storage)

K8s数据存储相关概念详解&#xff08;临时存储&#xff0c;节点存储&#xff0c;网络存储&#xff0c;PV/PVC&#xff09; 本篇文章分享一下存储卷和数据持久化的相关概念&#xff1a; 存储卷概述 临时存储卷&#xff08;Ephemeral Volumes&#xff09; 节点存储卷&#xff…

java求职学习day12

1 泛型机制&#xff08;熟悉&#xff09; 1.1 基本概念 &#xff08;1&#xff09;通常情况下集合中可以存放不同类型的元素&#xff0c;是因为将所有对象都看作Object类型放入&#xff0c;因此从集合中取出元素时&#xff0c;也是Object类型&#xff0c;为了表达该元素真实的…

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化&#xff0c;两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的&#xff1a;乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于&#xff08;…

Spring Boot 2 学习全攻略

Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今快速发展的 Java 后端开发领域&#xff0c;Spring Boot 2 已然成为一股不可忽视的强大力量。它简化了 Spring 应用的初始搭建以及开发过程&#xff0c;让开发者能够更加专注于业务逻辑的实现&am…

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法&#xff0c;主要考察开发经验与技术水平&#xff0c;回答不佳会影响面试印象。提供四个回答方向&#xff0c;准备其中一个方向即可。 1、设计模式应用方向 以登录为例&#xff0c;未…