ACLGUI IN SSTC(PIA)2020中可能遇到的一些知识点

2023-05-16

在这里插入图片描述

文章目录

  • (一)条件编译
  • (二)部分头文件
  • (三)空指针
    • 具体操作示例
    • 常见问题1:空指针指向了内存的什么地方?
    • 常见问题2: 在实际的操作中,如何判断某个指针是不是空指针?
    • 常见问题3:可以定义自己的 NULL 的实现吗?
  • (四)new,delete与指针
    • new创建对象
    • delete销毁对象
  • (五)ACLLIB中部分函数的使用(未完成)
  • (六)template(未完成)
  • (七)作用域与extern(未完成)
    • 局部作用域
    • 全局作用域
    • extern关键字
  • (八)简单的文件操作(未完成)

(一)条件编译

一般情况下,C语言源程序中的每一行代码.都要参加编译。但有时候出于对程序代码优化的考虑.希望只对其中一部分内容进行编译.此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译(conditional compile)。

1.if格式

#if 表达式
     语句序列①
[#else
     语句序列②]
#endif

功能:当表达式的值为真时,编译语句序列①,否则编译语句序列②。其中,#else和语句序列②可有可无。

2.ifdef格式

#ifdef     标识符
     语句序列①
[#else
     语句序列②]
#endif

功能:当标识符已被定义时(用#define定义),编译语句序列①,否则编译语句序列②。其中#else和语句序列②可有可无。

3.ifndef格式

#ifndef     标识符
     语句序列①
[#else
     语句序列②]
#endif

功能:该格式功能与ifdef相反。

4.补充内容

#undef
作用:在后面取消以前定义的宏定义。
示例1:

#include <iostream.h>
#include<string.h>
#define MAX 5
#undef MAX
void main()
{
    char name[MAX]="abcd"; //最多四个字符,否则会提示说超出长度,原因是由于字符串末尾有'\0'字符
    cout<<"MAX = "<<MAX<<endl;
    for(int i=0;i<MAX;i++)
    cout<<name<<" "<<endl;
}

我们定义了MAX但又将其取消,会得到“未定义符号MAX”的错误提示。

示例2:

#include <stdio.h>
int main( void )
{
#define MAX 200
    printf("MAX= %d\n",MAX);
#undef MAX
#define MAX 300
    printf("MAX= %d\n",MAX);
    return 0;
}

我们可以像这样修改已经宏定义的符号常量的值。

示例3:

#define TEST_A 1
#define TEST_CLASS_A clase T1
#include "TEST.h"
#undef TEST_A
#undef TEST_CLASS_A

此段代码中,在头文件TEST.h中,这两个宏定义语句起作用,该头文件之后,它们就会释放掉。

(二)部分头文件

1.windows.h

Windows.h头文件封装了许多库函数以及一些类,将一些复杂的工作由库函数处 理,Windows.h头文件中包含了Windef.h、Winnt.h、Winbase.h、Winuser.h、Wingdi.h等头文件,涉及到了Windows内核API,图形界面接口,图形设备函数等重要的功能。
其中常用的函数包括休眠函数sleep(),清屏函数system(“cls”)等。

2.commctrl.h

一个包含大量接口的windows控件
具体内容参考commctrl.h

注:commctrl.h不能单独使用,在引入该头文件时,我们应该先加上#include<windows.h>

3.sstream

sstream,即字符串流,通常是用来做数据转换的。比如

int n=10000;
char s[10];
sprintf(s,%d”,n);// s中的内容为“10000”

详情可以参考sstream

4.ctime

见官网文献cmath

(三)空指针

空指针是一个被赋值为0的指针,在没有被具体初始化之前,其值为0。由系统保证空指针不指向任何实际的对象或者函数。同时,任何对象或者函数的地址都不可能是空指针。

具体操作示例

#define NULL 0
char *p = NULL;

注:先把要赋值的变量的地址赋给空指针,然后才能把变量的值赋给该指针。

常见问题1:空指针指向了内存的什么地方?

标准并没有对空指针指向内存中的什么地方这一个问题作出规定,也就是说用哪个具体的地址值表示空指针取决于系统的实现。我们常见的空指针一般指向 0 地址,即空指针的内部用全 0 来表示;也有一些系统用一些特殊的地址值或者特殊的方式表示空指针。
在实际编程中不需要了解在我们的系统上空指针到底是一个 zero null pointer 还是 nonzero null pointer,我们只需要了解一个指针是否是空指针就可以了——编译器会自动实现其中的转换,为我们屏蔽其中的实现细节。注意:不要把空指针的内部表示等同于整数 0 的对象表示,有时它们是不同的。

常见问题2: 在实际的操作中,如何判断某个指针是不是空指针?

可以通过与空指针常量或者其它的空指针的比较来实现(注意与空指针的内部表示无关)。
如果 p 是一个指针变量,
若进行: p = 0;、p = 0L;、p = ‘\0’;、p = 3 - 3;、p = 0 * 17; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = (void*)0;),p 都成为一个空指针,并且由系统保证空指针不指向任何实际的对象或者函数。 反过来说,任何对象或者函数的地址都不可能是空指针。

指针变量 p 是空指针的判断:(假设 p 是一个指针变量,q 是一个同类型的空指针,要检查 p 是否是一个空指针)
if ( p == 0 )
if ( p == ‘\0’ )
if ( p == 3 - 3 )
if ( p == NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */
if ( NULL == p )
if ( !p )
if ( p == q )

常见问题3:可以定义自己的 NULL 的实现吗?

NULL 是标准库中的一个保留标识符。所以,如果包含了相应的标准头文件而引入了 NULL 的话,则再在程序中重新定义 NULL 为不同的内容是非法的,其行为是未定义的。

(四)new,delete与指针

在C++中,如果定义了对象,在内存中给它分配了空间;如果使用完以后,忘了销毁对象,即无法释放它所占用的内存空间。则这些内存空间一直被占用,直到重启计算机才可释放,这样就造成了内存泄露。

new创建对象

new操作符相当于一个函数,在内存分配完空间后,返回这个空间的首地址。

void main()
{  
   Point *p1=new Point(1,1);
   Point *p2=new Point(2,2);
}

delete销毁对象

用new命令可以为对象在内存中动态分配一定的空间,并返回分配空间的首地址;如果在程序运行结束之前没有用delete来销毁这些对象,释放它们所占用的空间也会发生内存泄露。

void main()
{
    Point *p1=new Point(1,1);
    Point *p2=new Point(2,2);
    delete p1;
}

指针p1所指向的对象因为调用了delete,则调用了析构函数,而销毁了对象;而指针p2指向的对象只是调用了new,而没有调用delete,没有被销毁,则发生了内存泄露。

因此,用new创建的对象都应当在程序内及时销毁。

(五)ACLLIB中部分函数的使用(未完成)

ACLLIB

(六)template(未完成)

函数模板定义一族函数。它声明一个通用的类模板,使之可以有一个或多个虚拟的类型参数。
函数模板的格式:

template< class T>(此处的T也可以用别的标识符替代)
prototype

函数模板在形式上分为两部分:模板、函数。在函数前面加上 template< class T>就成为函数模板,因此对函数的各种修饰(inline、constexpr 等)需要加在prototype上,而不是 template 前。

(七)作用域与extern(未完成)

局部作用域

全局作用域

对于对象而言(其他也是一样的),在main函数中,对象的作用域为他所在的最近的一对花括号内。在后花括号处析构函数被调用;全局的对象的作用域为声明之后的整个文件,析构函数在最后被调用。另外,临时产生的对象在使用完后立即会被析构。

extern关键字

extern

(八)简单的文件操作(未完成)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACLGUI IN SSTC(PIA)2020中可能遇到的一些知识点 的相关文章

  • 2020阿里云学生服务器操作步骤!

    前言 年龄在12岁 24岁之间的大陆个人实名认证用户 和 大陆全日制在校大学生在学生认证有效期内 xff0c 满足上述任一条件即可享受优惠价格 xff0c 同一用户只能保有一台学生优惠弹性计算产品 xff0c 一台数据库RDS产品 xff0
  • 毕业快乐 —— 写于2020年3月13日

    很久没有经营这个博客了 今天来写点什么罢 2020的春天 xff0c 由于猝不及防的疫情 xff0c 参加了一场特殊的毕业答辩 线上答辩形式 没有西装和鲜花 xff0c 似乎缺少了一些仪式感 但毕业似乎真真切切就是一件水到渠成的事情 xff
  • 2020年acwifi拆过的无线路由器配置汇总

    转载自 xff1a https www smyz net luyouqi 10990 html 2020年acwifi拆过的无线路由器配置汇总 2020 12 31 22 05 整合编辑 xff1a 64 数码一族 acwifi只是一个人
  • anaconda3 2020.07_Anaconda3 &amp; isce2

    Anaconda3安装 参考 xff1a https www digitalocean com community tutorials how to install anaconda on ubuntu 18 04 quickstart w
  • android10坑,Android 10 踩坑实录 &#128073; 2020-01-20

    1 https联网限制 Accessing hidden method Lcom android org conscrypt OpenSSLSocketImpl gt setUseSessionTickets Z V light greyl
  • 2020-09-29

    广西 河池学院 广西高校重点实验室培训基地系统控制与信息处理重点实验室 本篇博客来自河池学院 智控无人机小组 写作时间 xff1a 2020 9 29 刚刚接触STM32f103 xff0c 简单了解了基本内容 有48个引脚 xff0c 其
  • 2020-11-03

    云计算五大特点 云计算 xff0c 是一种基于互联网的计算方式 xff0c 通过这种方式 xff0c 共享的软硬件资源和信息可以按需提供给计算机和其他设备 典型的云计算提供商往往提供通用的网络业务应用 xff0c 可以通过浏览器等软件或者其
  • 2020-11-25

    网格计算和云计算有相似之处 xff0c 特别是计算的并行与合作的特点 xff1b 但他们的区别也是明显的 主要有以下几点 xff1a 首先 xff0c 网格计算的思路是聚合分布资源 xff0c 支持虚拟组织 xff0c 提供高层次的服务 x
  • 2020-12-28

    大数据发展必备三个条件 大数据概念的横空出世 xff0c 有赖于短短几年出现的海量数据 据统计 xff0c 互联网上的数据每两年翻一番 xff0c 而目前世界上90 以上的数据都是最近几年才产生的 当然 xff0c 海量数据仅仅是 大数据
  • CVPR 2020: Back to the Future: Joint Aware Temporal Deep Learning 3D Human Pose Estimation 论文阅读随笔

    论文网址 Github
  • 六级(2020/7-1) Text1

    People often discuss the dangers of too much stress xff0c but lately最近 a very different view of stress is gaining popula
  • 2020-12-29 Matlab自动化控制-Adrc自抗扰控制参数调节

    Matlab自动化控制 Adrc自抗扰控制参数调节 上篇参看 xff1a https blog csdn net qingfengxd1 article details 111830762 以最简单的线性组合方法 xff08 1 xff09
  • 自然资源部卫星遥感应用报告(更新至2020)

    自然资源部每年7月份发布上一年度的自然资源部卫星遥感应用报告 xff0c 是对自然资源领域典型应用的总结 xff0c 对于遥感应用探索有一定参考 自然资源部卫星遥感应用报告 2020版 自然资源部卫星遥感应用报告 2019版 摘录2020年
  • 【2020-8-8】ROS软件包自动安装依赖,安装ros_pcl

    最近要把T265部署到无人机平台 xff0c 编译一个软件的时候一直报ros pcl的错误 原因是树莓派安装的ros并不是完整版 xff0c 因为也不需要再树莓派上部署gazebo之类的仿真平台 网上关于安装ros pcl的文章基本上都已经
  • IntelliJ IDEA创建Servlet最新方法 Idea版本2020.2.2以及IntelliJ IDEA创建Servlet 404问题(超详细)

    第一次用IntelliJ IDEA写java代码 xff0c 之前都是用eclipse xff0c 但eclipse太老了 下面为兄弟们奉上IntelliJ IDEA创建Servlet方法 xff0c 写这个的目的也是因为在网上找了很多资料
  • 2020.2.22 排位赛 G - Bucket Brigade(BFS)

    Bucket Brigade 题面 题目分析 BFS模板题 代码 span class token macro property span class token directive keyword include span span cl
  • 数字电视的格式(BT.601 BT.709 BT.2020)和接口(BT.656 BT.1120 BT.2077)

    规格和格式接口特性 标清数字电视 xff08 SDTV xff09 BT 601BT 656 高清数字电视 xff08 HDTV xff09 BT 709BT 1120 超高清数字电视 xff08 UHDTV xff09 BT 2020BT
  • 2020-11-21

    xftp 提示无法显示远程文件夹 不是什么被动不被动的问题 是权限的问题 xff0c 如果这个文件夹有 34 x 34 权限 就可以打开 没有就不行
  • AI那些事儿之验证集、shuffle作用

    验证集干啥的 验证集合测试集哪个更重要 一句话 训练集用于 自动地 训练调整模型中网络参数 weights 验证集用于调超参数 epochs轮数 几层比较合适 啥时候过拟合 要不要dropout 要多大程度 测试集测试模型泛化能力 验证集和
  • .net4 的新 no pia 功能的优点是什么 [部署 PIA]

    我可能只是在这里遗漏了一些东西 但是 当我为 Excel 互操作编写一些代码时 它是这样的 我添加了对 Excel Com 库的引用 VS 创建一个 PIA Microsoft Office Interop Excel 通过 tlbimp

随机推荐

  • 201809-3-元素选择器

    试题编号 xff1a 201809 3 试题名称 xff1a 元素选择器 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 xff1a import java util public class Main pu
  • VTK三维重建面绘制算法之MC表面重建

    面绘制 面绘制算法是基于表面实现的一种三维重建算法 该类算法实现的响应速度快 xff0c 对于一些实时的交互操作中不存在卡顿问题 xff0c 在日常使用中有助于提高处理效率 xff0c 但该算法在细节特征上的重建效果是不如体绘制方法 基于算
  • git clone 换源 / GitHub 国内镜像

    由于国内政策原因 xff0c 访问 GitHub 会被限制速度 xff0c 在 clone GitHub 上的代码时很容易出现连接超时的情况 xff0c 给无法翻墙的同学造成了很多困扰 xff0c 本博客旨在提供有效的国内镜像 xff0c
  • 安卓与串口通信-实践篇

    前言 在上一篇文章中我们讲解了关于串口的基础知识 xff0c 没有看过的同学推荐先看一下 xff0c 否则你可能会不太理解这篇文章所述的某些内容 这篇文章我们将讲解安卓端的串口通信实践 xff0c 即如何使用串口通信实现安卓设备与其他设备例
  • STM32复习之路——按键控制流水灯中断

    stm32复习之路1 STM32性能与结构 这里介绍的是STM32F103VET6 价格便宜 xff0c 实用性强 xff0c 其中的V为100引脚 xff0c E表示512K的FLASH xff0c T表示封装形式为LQFP xff0c
  • NXP LPC1768最小系统板Keil开发环境流程演示

    关键字 xff1a NXP LPC1768 最小系统 Keil MDK 开发环境 J Link 仿真器 概述 xff1a 以 MDK4 74版本配合 J Link 仿真器为例演示一下最小系统板的调试过程 首先运行 J Link Comman
  • ubuntu 下查看conda镜像源配置文件并修改

    查看源 xff1a conda config show sources root condarc为配置文件所在位置 xff0c 可以对其进行备份 cp condarc condarc bkp 然后修改 ls a vim condarc添加各
  • vscode+cmake配置普通c++项目

    目录 写在前面代码命令行编译与运行vscode配置编译与调试调试参考 写在前面 1 本文内容 vscode 43 cmake配置普通c 43 43 项目 2 平台 ubuntu vscode 3 转载请注明出处 xff1a https bl
  • Vscode 使用Remote-SSH 连接到虚拟机ubuntu18.04(以及遇到的错误和解决办法)

    vscode版本 xff1a 1 40 0 ubuntu xff1a 18 04 一 vscode安装remote ssh插件 二 设置要连接的主机IP地址和用户名 1 Crtl 43 P呼出命令栏 xff0c 输入 gt Remote S
  • 7、结构体之结构体数组

    结构体这块本来学着没有什么问题的 xff0c 但是 xff0c 有时候的学习不知道怎么的 xff0c 可能是课程进度有点快 xff0c 会让自己把前面的知识点与现学的联系起来 xff0c 从而使自己迷惑起来 好了 xff0c 先说问题 xf
  • 输入n个数字,并求出它们中间的最大值与最小值

    做题觉得简单 xff0c 拿着编译器一编程就各种小毛病出来了 xff0c 这样下去的进度就太慢了 既然是n个数 xff0c 那么肯定就要有输入 xff0c 定义一个数组a 5 来接收从键盘输入的数字 xff0c 怎么将接收的数值依次传入数组
  • 二叉树和堆(理论)

    树 1 树其实就是不包含回路的连通无向图 2 一棵树中的任意两个结点有且仅有唯一的一条路径连通 3 一棵树如果有n个结点 xff0c 那么它一定恰好有n 1条边 二叉树 二叉树是一种特殊的树 二叉树的特点是每个结点最多有两个儿子 xff0c
  • 十进制转八进制

    给一个十进制数 xff0c 输出它的八进制数 由于取余所得得到数需要逆序输出 xff0c 符合栈的特征 xff08 后进先出 xff09 xff0c 所以使用栈来完成 源代码 xff1a include lt stdio h gt incl
  • 矩阵各项求和

    include span class token generics function span class token punctuation lt span stdio span class token punctuation span
  • 简单易理解的做法:有n个人围成一圈,顺序从1开始排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。简单的循环做法。

    写在前面 xff1a 这个方法用到很简单的指针与循环 xff0c 以方便新手上手该题 xff0c 并且通过直接模拟的方式理解这一过程 很多同学看懂题目意思而无法实现 xff0c 不妨看看我的方法 上代码 xff1a include lt i
  • switch中的i++与++i

    for 语句1 语句2 语句3 在上式for循环的语句3中 xff0c i 43 43 与 43 43 i都是在完成一次循环后执行 xff0c 无论使用哪一种 xff0c 输出结果都是一样的 因为i 43 43 是在使用当前值之后再 43
  • 东北大学秦皇岛分校通信工程中外合作2020级C语言实验5

    1 编写程序 xff0c 定义整型指针变量p xff0c 初始化整型一维数组a的首地址 xff08 数组a的长度为10 xff09 xff0c 利用指针变量p实现从键盘输入10个整型数据到一维数组a中 xff0c 并输出该数组中最大值和最大
  • 东北大学秦皇岛分校通信工程中外合作2020级C语言实验6

    1 定义结构体类型 xff0c 包括候选人名和选票两个成员 xff0c 编程实现对候选人得票的统计 1 Write a C program that implements the statistics of the candidate vo
  • C/CPP三种排序算法

    一 简单选择排序 span class token keyword void span span class token function sort span span class token punctuation span span c
  • ACLGUI IN SSTC(PIA)2020中可能遇到的一些知识点

    文章目录 xff08 一 xff09 条件编译 xff08 二 xff09 部分头文件 xff08 三 xff09 空指针具体操作示例常见问题1 xff1a 空指针指向了内存的什么地方 xff1f 常见问题2 xff1a 在实际的操作中 x