【c++】入门1

c++关键字

在这里插入图片描述

命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的.

#include<stdio.h>
int rand = 10;
int main()
{printf("%d\n", rand);return 0;
}

当我们没有包含rand函数的头文件时,这个是没有任何问题的,因为定义的全局变量不会冲突。
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
int rand = 10;
int main()
{printf("%d\n", rand);return 0;}

现在包含头文件的话
#include <stdlib.h>
在这里插入图片描述

c语言没法解决这样的命名冲突问题,所以c++提出了namespace来解决。

命名空间定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

#include<stdio.h>
#include<stdlib.h>namespace ggw
{struct node{int p1;struct node* next;};}
namespace zjw
{struct node{int p1;struct node* next;};}
int main()
{struct ggw::node t;struct zjw::node p;return 0;}

解决了命名冲突问题;

#include<stdio.h>
#include<stdlib.h>namespace ggw
{struct node{int p1;struct node* next;};int min = 5;}
namespace zjw
{struct node{int p1;struct node* next;};int min = 10;}
int main()
{struct ggw::node t;struct zjw::node p;printf("ggw中的%d\n",ggw::min);printf("zjw中的%d\n", zjw::min);return 0;}

使用不同的命名空间可以将同一个变量区分开,比如说ggw中的min和zjw中的min
在这里插入图片描述

命名空间可以嵌套

namespace zjw
{struct node{int p1;struct node* next;};namespace ret{int min = 10;}}
int main()
{struct ggw::node t;struct zjw::node p;printf("ggw中的%d\n",ggw::min);printf("zjw中的%d\n", zjw::ret::min);return 0;}

这里会多套一层,多加了一层作用域
在这里插入图片描述

1.当定义两个头文件里的变量包含在一起时,也会出现变量重复定义,相当于一个工程里面,有两个组分别进行工程的不同部分,当两个组用同一命名时候,就可以用到命名空间了。
2.当两个命名空间同名时,编译器会将两个合并成一个命名空间。

命名空间的使用

namespace ggw
{struct node{int p1;struct node* next;};int a = 3;int b = 4;int c = 5;
}

1.加命名空间名称及作用域限定符

int main()
{printf("%d\n",ggw::a);return 0;}

2.使用using将命名空间某个成员引入

using ggw::b;
int main()
{printf("%d\n", b);return 0;}

相当于将ggw命名空间中的b变量展成全局的(虽然理解不太对,以后再修改)
在这里插入图片描述
展开的话,再定义一个全局变量会出现重定义。

3.使用using namespace 命名空间名称引入。

using namespace ggw;int main()
{printf("%d\n", a);printf("%d\n", b);printf("%d\n", c);return 0;}

相当于将ggw命名空间中的所有变量展成全局的(虽然理解不太对,以后再修改),不建议全部展开

c++输入和输出

#include<iostream>
using namespace std;
int main()
{cout << "hello world" << endl;}

std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
如果不使用using namespace std的话,那就要加上该函数所在的命名空间(作用域)

#include<iostream>
//using namespace std;
int main()
{std::cout << "hello world" << std::endl;}

说明:

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型

自动识别变量类型

#include<iostream>
using namespace std;
int main()
{int a;float b;double c;cin >> a;cin >> b;cin >> c;cout << a << endl;cout << b << endl;cout << c << endl;
}

在这里插入图片描述
不用向c语言printf找变量类型了。

std命名空间的使用惯例:
std是C++标准库的命名空间,如何展开std使用更合理呢?

  1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
  2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
    象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
    大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
    using std::cout展开常用的库对象/类型等方式。

缺省参数

缺省参数概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

#include<iostream>
using namespace std;
void print(int c=50)
{cout << c << endl;}
int main()
{print(10);print();}

在这里插入图片描述
当函数有传参数过去时,就用传过去的形参,如果没有传过去的形参,采用该形参的缺省值。

缺省参数分类

全缺省参数

void print(int c=50,int b=20,int a=65)
{cout << c << endl;cout << b<< endl;cout << a << endl;}

半缺省参数

void print(int c,int b=20,int a=65)
{cout << c << endl;cout << b<< endl;cout << a << endl;}

缺省参数可用来初始化,比如栈的初始化。
在这里插入图片描述
当初始化栈没有参数时,使用缺省参数。

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  2. 缺省参数不能在函数声明和定义中同时出现
  3. 缺省值必须是常量或者全局变量
  4. C语言不支持(编译器不支持)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Azure 架构师学习笔记】- Power Platform(1) - 简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Power Platform】系列。 Power Platform 它是一个SaaS平台&#xff0c;支持和延伸M365&#xff0c; Dynamics 365和Azure甚至其他第三方服务。主要提供低代码&#xff0c;自动化&#xff0c;数据驱动和定制化业务逻辑的服务…

智能床业务表现亮眼,梦百合获鲸潮奖“年度最硬科技奖”

12月26日,由中国领先的财经信息服务平台蓝鲸、记者工作平台鲸平台主办,主流财经通讯社财联社联合主办的第四届“鲸潮奖”在沪揭晓,知名睡眠科技品牌MLILY梦百合入选,荣获“2023年度最‘硬’科技奖”,其他获奖品牌还有新希望乳业、上海家化、洽洽食品、361、汤臣倍健等。 鲸潮奖…

HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou OnlyForYou 是一台中等难度的 Linux 计算机&#xff0c;其特点是 Web 应用程序容易受到本地文件包含 &#xff08;LFI&#xff09; 的影响&#xff0c;该应用程序用于访问源代码&#xff0c;从而揭示盲目命令注入漏洞&#xff0c;从而导致目标系统上的 shell。该计…

unity 保存和加载窗口布局

这么简单的事网上一堆废话文章 右上角&#xff0c;Layout点开后有保存和删除 要切换布局点红框里的已经保存的布局

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案&#xff1f; 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作&#xff0c;看看效果如何&#xff0c;能不能辅助我们日常的方案编写与创作&#xff1f;以前用ChatGPT也尝试过&#xff0c;但对于专业性更强的内容&#xff0c;还有表现的…

pm2的安装和常用命令

PM2 是 Node.js 应用程序的生产流程管理器&#xff0c;内置负载均衡。它可以帮助您保持 Node 应用程序永久活动&#xff0c;重起这些 node 应用程序也不需要停机&#xff0c;并简化常见的系统管理任务。 一、安装 npm install pm2latest -g # or yarn global add pm2 # or pnp…

Linux第一个小程序-进度条(c语言版)

目录 行缓冲区概念&#xff1a; 行缓冲区代码演示&#xff1a; ​编辑进度条代码 1&#xff1a;memset函数&#xff1a; 2&#xff1a;const char* lable"|/-\\"; 3&#xff1a;usleep C语言 usleep 函数的功能和用法&#xff1a; 4&#xff1a;进度条代码的实…

MongoDB数字字符串排序问题

问题描述 MongoDB中有一个集合t_test_sort结构如下&#xff0c;其中数值字段value为字符串类型&#xff0c;现想按照value的数值大小进行降序排列。 {"_id" : ObjectId("656c87b36ca8100cd4a60348"),"name" : "麻了","date&quo…

《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》

基于Feign的声明式远程调用&#xff08;代码更优雅&#xff09;&#xff0c;用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理&#xff1a;Nacos Config 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相…

OpenGL :LearnOpenGL笔记

glfw https://github.com/JoeyDeVries/LearnOpenGL/blob/master/src/1.getting_started/1.1.hello_window/hello_window.cpp #include <glad/glad.h>// 注: GLAD的include文件包含所需的OpenGL头文件(如GL/GL.h) &#xff0c;因此确保在其他需要OpenGL的头文件 (如GLFW…

安装向日葵并设置开机自启动

Ubuntu/Deepin系统&#xff1a; 下载向日葵远程安装包 向日葵远程控制app官方下载 - 贝锐向日葵官网向日葵远程控制app官方下载 - 贝锐向日葵官网 图形版安装 图形版下载到本地&#xff0c;然后上传到服务器/home/narada目录下 apt install SunloginClient_11.0.1.44968_am…

添加调试日志,bug消失

参考&#xff1a;就删了个printf&#xff0c;代码崩了&#xff01; 1、运行报错代码 #include "stdio.h" #include "stdlib.h" #include "string.h"void func1() {int arr[10];memset(arr, 1, sizeof(arr)); }void func2() {int index;int* ar…

【PTA】L1-32 Left-pad (C++)

题目链接&#xff1a;L1-032 Left-pad 题目要求&#xff1a; 根据新浪微博上的消息&#xff0c;有一位开发者不满NPM&#xff08;Node Package Manager&#xff09;的做法&#xff0c;收回了自己的开源代码&#xff0c;其中包括一个叫left-pad的模块&#xff0c;就是这个模块…

亚马逊,速卖通,lazada卖家如何快速提升新品星级与评论数量

补单测评在所有的跨境电商中扮演着重要的角色&#xff0c;商家们了解到补单可以快速增加产品的销量、评论数量&#xff0c;提升排名&#xff0c;从而打造爆款产品。产品的购买率和评价对于转化率和平台排名至关重要&#xff01;当排名不断提高&#xff0c;带来的流量也会增加&a…

Java框架基础--maven,http,postman

maven Maven 提供了一个标准的构建生命周期和一组约定的目录结构&#xff0c;以简化和规范项目的构建过程。它主要用于 Java 项目&#xff0c;但也可以用于其他类型的项目。提高了项目的可维护性、可重复性和一致性&#xff0c;简化了构建和依赖管理的复杂性&#xff0c;使得开…

Java guava partition方法拆分集合自定义集合拆分方法

日常开发中&#xff0c;经常遇到拆分集合处理的场景&#xff0c;现在记录2中拆分集合的方法。 1. 使用Guava包提供的集合操作工具栏 Lists.partition()方法拆分 首先&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifa…

抚琴成一快-琶音

琶音 0.导读1.定义2.作用3.注意事项4.练习方法1.前置知识2.和弦指型图1.大三和弦琶音指型2.小三和弦琶音指型3.大七和弦琶音指型4.小七和弦琶音指型5.属七和弦琶音指型 3.演奏方法1.拨弦方式2.节奏3.其他 99.参考 0.导读 在吉他学习的过程中&#xff0c;大家或多或少都会听到过…

模型树实操

很多时候&#xff0c;数据都是有层级和分类的&#xff0c;使用laravel的Dcat框架&#xff0c;可以快速搭建一个结构清晰、且可以鼠标拖拽排序的后台&#xff1b;先上例子更直观&#xff1a; 这里是Dcat的模型树使用文档&#xff0c;戳一下&#xff1b; 重点注意事项有&#x…

渗透测试(Lab4.2)

配置WebDeveloper的时候遇到一个错误 导入失败&#xff0c;因为 E:…ovf 未通过 OVF 规范一致性或虚拟硬件合规性检查。 请单击“重试”放松 OVF 规范与虚拟硬件合规性检查&#xff0c;并重新尝试导入&#xff1b; 或单击“取消”以取消导入。如果重新尝试导入&#xff0c;可能…

报修系统的流程是怎么样的?有什么好用的售后工单管理系统推荐?

很多制造业公司为了做好售后报修服务&#xff0c;会特意建立一个售后报修系统。我以前有一个做家电的客户&#xff0c;他们公司就是用一个工单系统来处理消费者报修的问题&#xff0c;效果挺不错的。消费者买到的产品有问题的话&#xff0c;直接用微信扫描说明书上面的小程序码…