首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

C++命名空间、标准输入输出、引用

编程知识
2024年07月29日 19:36

1、简述C++中命名空间的作用。

答:避免重复定义全局变量的问题。

2、定义两个命名空间A 和 B 分别在A中和B中定义变量value。在main函数中将两个空间的value打印出来。

#include "iostream"
using namespace std;
namespace A
{
    int value = 100;
}
namespace B
{
    int value = 10;
}
int main()
{
    cout << "名字空间A中value值为:" << A::value << endl;
    cout << "名字空间B中value值为:" << B::value << endl;
}

3、const int a; 在C++编译器中是否需要初始化,为什么?

需要初始化,因为const修饰的变量为只读属性,定义后不允许再对变量a做赋值操作,即如果未在定义变量的同时对a进行赋值,a的值默认为0且后续不允许改变值。

4、在c++中怎么使用c库函数?

方法一:
在.c文件中写入条件编译

#ifdef _cplusplus
Extern “C”{
………………
				}(在复合语句中写入c库函数及其代码)
#endif

方法二:
直接在.cpp文件中用extern “C”{包含C库函数的头文件文件}
在进行编译的时候:

g++ 文件名.cpp  -I(路径/到头文件) -L(路径/到库文件) -l(库名)

5、C++的常用后缀有哪些?

  • .cpp
  • .hpp
  • .cc
  • .h
  • .cxx

6、命名空间的匿名空间的作用,以及与C语言中的static 的异同点?

匿名空间的定义提升了代码的书写速度,使原来的std::变量--->::变量,可直接调用
匿名空间的作用与Static的相同点,在调用函数内部定义的局部变量不会随着函数的调用结束而被释放内存,而是直至整个程序终止,变量才被释放内存。
匿名空间的作用与Static的不同点,static 作用的作用域在整个工程文件中都有用而匿名空间仅在定义匿名空间的本文件中使用。

7、引用与指针的区别

指针 :数据类型 * 指针名 = &变量
引用 :数据类型 & 引用名 = 变量 (数据类型必须与变量类型一致,而且必须要初始化)

  1. 定义和性质
    指针:是一个变量,它存储的是另一个变量的内存地址。指针本身是一个独立的实体有自己的内存空间
    引用:是原变量的一个别名,它并不占用独立的内存空间,而是与原始变量共享相同的内存地址
  2. 初始化
    指针:可以在定义时不初始化,但通常建议初始化以避免指向不确定的内存地址。
    引用:必须在定义时初始化,且一旦初始化后,就不能再指向其他变量。
  3. 灵活性
    指针:可以指向其他变量,包括在运行时改变指向。指针也可以有多级,如int p;。
    引用:一旦初始化后,就不能再指向其他变量。引用只能是一级,如int &r = a;,而int &&a;(尝试定义二级引用)是不合法的。
  4. 空值
    指针:可以指向NULL(或nullptr在C++11及以后版本中),表示不指向任何对象。
    引用:不能为NULL,它必须始终指向一个有效的对象。
  5. sizeof运算
    指针:sizeof运算符返回的是指针本身所占用的内存大小,这取决于系统架构(如32位或64位)。
    引用:sizeof运算符返回的是被引用对象的大小,而不是引用本身的大小(因为引用不占用独立的内存空间)。
  6. 运算
    指针:支持多种运算,如算术运算(加减)、比较运算等,这些运算通常基于指针所指向的内存地址。
    引用:不支持算术运算,它主要用于访问和修改它所引用的变量的值。
  7. 函数参数和返回值
    作为函数参数:指针传递的是地址值,是值传递的一种;而引用传递的是变量的别名,可以看作是地址传递的一种更直观、更安全的方式。引用作为函数参数时,不需要解引用就可以直接访问和修改原始变量的值。
    作为函数返回值:函数可以返回引用,允许对返回的对象进行进一步的操作。而指针作为函数返回值时,需要注意指针的有效性和野指针问题。
  8. 安全性
    指针:由于指针的灵活性,它可能带来更高的风险,如野指针、悬挂指针等问题。
    引用:相对更安全,因为它一旦被初始化后就不能再指向其他变量,减少了出错的可能性。
From:https://www.cnblogs.com/LvYaoNan/p/18331029
本文地址: http://shuzixingkong.net/article/567
0评论
提交 加载更多评论
其他文章 安全可信,Solon v2.8.6 发布
Java “纯血国产”应用开发框架:更快、更小、更简单。 并发高 2~ 3 倍;内存省 50%;调试重启可快至 10 倍;打包最多缩小 90%;同时支持 java8 ~ java22, graalvm native image 运行时。
从DDPM到DDIM(四) 预测噪声与后处理
从DDPM到DDIM(四) 预测噪声与后处理 前情回顾 下图展示了DDPM的双向马尔可夫模型。 训练目标。最大化证据下界等价于最小化以下损失函数: \[\boldsymbol{\theta}^*=\underset{\boldsymbol{\theta}}{\operatorname{argmin}
从DDPM到DDIM(四) 预测噪声与后处理
支付宝退款和结果查询接口简单实现(.Net 7.0)
〇、前言 支付宝对 .Net 的支持还是比较充分的,在每个接口文档中都有关于 C# 语言的示例,这样就大大降低了对接的难度,很容易上手。 官方接口文档地址:退款-alipay.trade.refund 退款状态查询-alipay.trade.fastpay.refund.query 本文就简单实现下
支付宝退款和结果查询接口简单实现(.Net 7.0) 支付宝退款和结果查询接口简单实现(.Net 7.0)
《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇
1.简介 前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功。废话不多说直接进入正题。 2.项目实战 宏哥之前在讲解和分享Java+selenium系列时,将其划分为非in
《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇
软件测试必备 - 14个接口与自动化测试练习网站
随着互联网和移动应用的快速发展,接口和自动化测试的重要性日益凸显。越来越多的企业开始重视API测试,因为它不仅能提升开发效率,还能确保系统的稳定性和安全性。这些练习网站为测试人员提供了宝贵的资源,帮助他们掌握必要的技能,应对日益复杂的测试需求。 在软件测试的世界里,接口与自动化测试是提升效率和确保质
软件测试必备 - 14个接口与自动化测试练习网站 软件测试必备 - 14个接口与自动化测试练习网站 软件测试必备 - 14个接口与自动化测试练习网站
.NET 高性能缓冲队列实现 BufferQueue
目录前言适用场景功能说明使用示例BufferQueue 内部设计概述Topic 的隔离Partition 的设计对并发的支持Partition 的动态扩容Segment 的回收机制Benchmark写入性能测试消费性能测试 前言 BufferQueue 是一个用 .NET 编写的高性能的缓冲队列实现
.NET 高性能缓冲队列实现 BufferQueue .NET 高性能缓冲队列实现 BufferQueue .NET 高性能缓冲队列实现 BufferQueue
.NET周刊【7月第4期 2024-07-28】
国内文章 .NET 高性能缓冲队列实现 BufferQueue https://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDyg BufferQueue 是一个用 .NET 编写的高性能的缓冲队列实现,支持多线程并发操作。 项目地址:https://github.c
.NET周刊【7月第4期 2024-07-28】 .NET周刊【7月第4期 2024-07-28】
LLM并行训练7-混合并行总结
概述 根据前面的系列文章, 对预训练大模型里用到的主要并行加速技术做了一系列拆分. 但是在实际的训练里往往是多种并行混合训练. 我们要怎么配置这些并行策略才能让训练框架尽可能的减少通信瓶颈, 提升GPU计算利用率呢? 这里的变量太多了, 以最简单的3D并行为例: 硬件层面有: 单台机器的卡数/卡间带
LLM并行训练7-混合并行总结 LLM并行训练7-混合并行总结 LLM并行训练7-混合并行总结