C++入门基础04:代码实战经验分享(全局变量与局部变量重名、静态变量、数据类型选取、养成变量创建就初始化、少用多层指针)

2023-11-04

C++入门基础04:代码实战经验分享(全局变量与局部变量重名、静态变量、数据类型选取、养成变量创建就初始化、少用多层指针)

1、全局变量与局部变量重名

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int a = 10; //全局变量

int fun() {

    return 0;
};

int main()
{
    //基本内置类型 变量 引用与指针 const限定符 自定义数据结构
    //语法:法律 
    //经验:道德约束

    //1、全局变量与局部变量重名
    int a = 6; //重名,局部变量会屏蔽全局变量;
    cout << "a:" << a << endl;
    cout << "全局变量a:" << ::a << endl; //虽然这样可以获取全局变量的值,但是不便于理解,因此不要重名。

    return 0;
}

在这里插入图片描述

2 、静态变量

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int a = 10; //全局变量

int fun() {

    return 0;
};

int main()
{
    //2、静态变量
    //这个变量存储在静态存储区中。这个变量的生命周期比较长。只有等到程序执行完成,进行内存空间回收的时候才会消失。
    //如果想要每次程序执行的时候,这个变量的值都不变,就使用静态变量来处理。
    static int b = 8;

    //此外静态变量还可以如下使用:
    for (int i = 0; i < 10; i++) {
	    int d = 1;
	    d++;
	    cout << "d:" << d << endl;
	}
    //静态变量用于循环中:
    cout << "\n" << endl;
    for (int i = 0; i < 10; i++) {
        static int c = 1;
        c++;
        cout << "c:" << c << endl;
    }

    return 0;
}

在这里插入图片描述

3、数据类型选取

1、一般选int(4个字节,int可以表示的数据范围是-21亿到21亿左右),short (2个字节,16位,2^16次方个数的值表示)太小,int不够选long long(8个字节);
2、不可能为负数,选无符号,无符号有符号不要混用;
3、不要使用char做算术运算;
4、浮点数运算最好选用double,精度高而且性能和float几乎没有差别。

4、养成变量创建就初始化

养成变量创建就要初始化的好习惯,特别是指针,初始化为空指针nullptr(0x00000000的地址)。
内置类型有默认初始值,但是不建议依赖这个。

5、少用多层指针,最多用到两层(指向指针的指针)

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int a = 10; //全局变量

int fun() {
    return 0;
};

int main()
{
     int b = 8;

    //5、少用多层指针,最多用到两层(指向指针的指针)
    int* p = &b;
    //指向指针的指针
    int** pp = &p;

    cout << "b地址:" << &b << endl;
    cout << "p指针:" << p << endl;
    cout << "pp指针(指向指针的指针):" << pp << endl;

    //写指针尽量简单一些,利于问题排查。
    
    return 0;
}

在这里插入图片描述

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

C++入门基础04:代码实战经验分享(全局变量与局部变量重名、静态变量、数据类型选取、养成变量创建就初始化、少用多层指针) 的相关文章

  • 双缓冲列表框

    我有一个 CheckedListBox WinForms 控件 它继承自 ListBox 谷歌搜索显示问题出在 ListBox 该控件锚定到其窗体的所有四个边 当调整表单大小时 列表框会出现难看的闪烁 我尝试继承 CheckedListBo
  • 代码块调试问题

    我正在尝试在代码块中运行一个简单的链表程序 但我无法运行该程序并且收到以下错误 Active debugger config GDB CDB debugger Default Building to ensure sources are u
  • NHibernate手动控制抓取

    我正在使用 NHibernate 我想控制手动获取相关实体 这是我的示例实体 public class Post public virtual long Id get set public virtual string Title get
  • 查找周边上的点来表示边界/形状

    我有一个简单的二维网格 其格式为myGrid x y 我正在尝试找到一种方法来找到所选网格周围的周长 这样我就有了所选网格的形状 这是我的意思的一个例子 这里的想法是找到所有相关的 角点 也就是图像周边的红点 放入一个列表中 这样我就可以从
  • iPhone 编程游戏

    使用 Objective C 还是 C 为 iPhone 编写游戏最好 像 Flight Control 这样的游戏会用什么语言编写 图形应采用什么格式才能在 iPhone 上正确显示并快速加载 像 Flight Control 这样的游戏
  • 使用 boost::asio 是否有一种可移植的方法来查找空闲端口号

    我目前正在尝试找出一种方法来查找空闲端口号以建立连接 最好使用 boost asio 然后 该端口号将用于侦听 只有这样我才能打开套接字 大致来说 有没有办法做到 tcp resolver query query localhost por
  • 带有 Prism 区域适配器的 AvalonDock

    我看到了一些关于 SO 的问题 但似乎没有一个适合我 我希望能够使用伟大的使用 Prism 4 但是 所有示例区域适配器均适用于 Avalondock 1 x 系列 我无法使其工作 有人有关于如何为 AvalonDock 的 LayoutD
  • 在 C++ 中从另一个数组初始化结构内的数组[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions struc
  • 需要帮助将 winform 迁移到 net 5

    我正在将 winform 应用程序从 net core 3 1 移植到 net 5 并收到以下错误 严重性代码 说明 项目文件行抑制状态 错误NETSDK1136 目标平台必须设置为Windows 通常 通过在 TargetFramewor
  • 使用 openssl 库获取 x509 证书哈希

    我目前正在开发一个应用程序 它使用 openssl 库 libcrypto 来生成证书 现在我必须获取现有证书的哈希值 当我使用终端时 我可以使用以下命令生成哈希值 openssl x509 hash in cert pem noout 输
  • 在浏览器中测试wcf服务

    我无法在浏览器中调用基本的 wcf web 方法 即使使用
  • 向量和常量

    考虑一下这个 void f vector
  • 等效

    这是否保证始终为真 std numeric limits
  • 我使用 tm/mktime 是否错误,如果没有,有解决方法吗?

    我认为下面的程序应该输出从公元 1 年到 1970 年每年第一天到 1970 年的秒数 前面是time t在编译它的系统上 CHAR BIT是一个宏 所以我认为你不能只是复制编译后的可执行文件并假设它是正确的 尽管实际上一切都使用 8 位c
  • 如何设置扬声器声音增强设置

    如何以编程方式设置 Windows 扬声器设置 增强 选项卡 中可用的声音效果 恐怕这是不可能的 参见 Maurits 对他的评论blog http blogs msdn com b matthew van eerde archive 20
  • 为 winforms ComboBox 中的单个项目着色?

    我遇到了一个困境 我有一个表单 其中包含许多组合框 其中包含在某些情况下可能无效 过时的信息 选项 项目 我不能简单地从项目中删除过时的信息 但我确实想在选项无效时为用户提供视觉线索 我正在考虑对项目进行着色 可能是红色 来指示它们是否无效
  • Xamarin Forms:System.Reflection.TargetInitationException:调用目标已引发异常

    我正在为这个问题苦苦挣扎 我只是创建了一个简单的跨平台页面 这里是 XAML 代码
  • In 和 Out 属性在 .NET 中如何工作?

    我一直在尝试跨序列化数组AppDomain边界 使用以下代码 public int Read byte buffer int offset int count return base Read buffer offset count 作为猜
  • 在 C++11 中设置 std::thread 优先级的可移植方法

    在后 C 11 世界中设置 std thread 实例的优先级的正确方法是什么 是否有一种至少在 Windows 和 POSIX Linux 环境中有效的可移植方法 或者是获取句柄并使用可用于特定操作系统的任何本机调用的问题 无法通过 C
  • 文件按文件名模式存在

    我在用 File Exists filepath 我想做的是将其替换为模式 因为文件名的第一部分发生了变化 例如 该文件可以是 01 peach xml 02 peach xml 03 peach xml 如何根据某种搜索模式检查文件是否存

随机推荐

  • Linux下安装Nginx

    一 什么是Nginx Nginx engine x 是一个高性能的 HTTP和反向代理服务器 也是一个 IMAP POP3 SMTP 服务器 正向代理 反向代理 很多大网站都是使用nginx做反向代理 应用非常广泛 Nginx是一款高性能的
  • Spring Boot 中的静态资源是什么,如何使用

    Spring Boot 中的静态资源是什么 如何使用 在 Web 应用程序中 静态资源通常是指不会动态生成的文件 例如图片 CSS JavaScript 文件等 Spring Boot 提供了一种简单的方式来处理这些静态资源 让我们可以更加
  • SpringMVC手写-核心逻辑

    文章目录 注解解析过程DispatcherServlet web xml Controller 自定义注解 从网上看到了SpringMVC实现的最简单版本 大致体现了核心逻辑 1 实现HttpServlet实现web请求访问 2 在实际处理
  • 批量获取力扣做题量工具

    这是一个批量统计国内版LeetCode做题量的工具 写这个小工具的起因是我们实验室准备每周统计大家leetcode的做题量 我们实验室十几个人 如果一人一个人看 太费时间了 作为高效程序员这不是我们做事的风格 于此就有了这个小工具 对于平常
  • matlab 基于密度的聚类算法,基于密度DBSCAN的聚类算法

    聚类算法概念 聚类分析又称群分析 它是研究 样品或指标 分类问题的一种统计分析方法 同时也是数据挖掘的一个重要算法 聚类 Cluster 分析是由若干模式 Pattern 组成的 通常 模式是一个度量 Measurement 的向量 或者是
  • mysqldump使用方法(MySQL数据库的备份与恢复)

    mysqldump使用方法 MySQL数据库的备份与恢复 mysqldump help 1 mysqldump的几种常用方法 1 导出整个数据库 包括数据库中的数据 mysqldump u username p dbname gt dbna
  • TCP三次握手

    三次握手指的是TCP协议建立连接的过程 当客户端请求与服务器建立TCP连接时 必须要经过三次握手才能真正建立连接 三次握手详细过程 第一次握手 客户端向服务器发送 SYN 报文 请求建立连接 其中 SYN 标志位被置为 1 同时客户端随机选
  • eclipse在java环境基础上配置C++环境(MinGW安装包+详细步骤)

    前言 在eclipse开发java的基础上 又不想再下一个c 的编辑器 如何实现java与c 的转换 博主整了两天 踩了好多坑 整理出来帮助大家 第一步 在eclipse里下载CDT 打开以后需要一点时间 搜索CDT 等待下载完成 补充说明
  • mac在pytorch环境下装transformer并成功实例运行

    主要是想成功运行下面这个安装步骤 https huggingface co transformers installation html installing from source 一 进入环境 conda activate pytorc
  • RuntimeError: cublas runtime error : unknown error at C:/w/b/win…cu:225

    报错 分析原因 GPU不够用 把数组改小就可以正常运行 或者改为在CPU上运行
  • Think in Java 复用类(第7章) 读书笔记

    第7章 复用类 1 组合语法 在新类中产生现有类的对象 由于新类是由现有类的对象组成的 所以这种方法称为组合 2 继承语法 按照现有类的类型来创建新类 无需改变现有类的形式 采用现有类的形式并在其中添加新代码 除非已经明确从其他类中继承 否
  • 程序的编译、链接与装载

    程序员的自我修养 链接装载与库 是一本值得推荐的书 主要介绍系统软件的运行机制和原理 涉及在Windows和Linux两个系统平台上 一个应用程序在编译 链接和运行时刻所发生的各种事项 包括 代码指令是如何保存的 库文件如何与应用程序代码静
  • 考研复试数据库原理课后习题(十三)——大数据管理

    大数据管理 1 什么是大数据 大数据有何特征 大数据是指无法在可容忍的时间内用现有IT技术和软硬件工具对其进行感知 获取 管理 处理和服务的数据集合 大数据的基本特征如下 大数据的首要特征是数据量巨大 而且在持续 急剧地膨胀 大数据异构的数
  • 《疯狂java讲义》读书笔记(七):多线程

    疯狂java讲义 读书笔记 七 多线程 1 线程和进程 这两个概念必须得区分 之前学操作系统的时候我老给弄混了 进程的三种基本状态 1 运行态 running 当进程得到处理机 其执行程序正在处理机上运行时的状态称为运行状态 在单CPU系统
  • 为什么React不允许直接修改state

    React强烈不建议直接修改state 究其原因可以从两方面进行阐述 性能问题 React提倡不可变性 通过setstate 修改state实际上是创建了一个副本用来代替原来的state 这与直接修改原数据有着本质的区别 其他框架类似ang
  • /etc/sysconfig/network中的NOZEROCONF配置(多出169.254.0.0网段的路由)

    1 问题 发现多了从169 254 0 0网段出去的eth0 但eth0配置的IP是192 168 1 3 2 解决 169 254 0 0原是windows下的主机dhcp获取ip失效时 预设的一个ip地址段 linux照搬过来 169
  • [数值计算-2]:数值计算算法好坏的判断标准

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119776181 目录 1 案
  • debian 系统无法使用 systemctl

    systemctl status sshd 报错如下 Failed to get D Bus connection Unknown error 1 解决方法 apt install systemd sysv reboot
  • Python爬虫学习笔记(十一)————scrapy shell

    目录 1 什么是scrapy shell 2 安装ipython 安装 3 应用 1 scrapy shell www baidu com 2 scrapy shell http www baidu com 3 scrapy shell h
  • C++入门基础04:代码实战经验分享(全局变量与局部变量重名、静态变量、数据类型选取、养成变量创建就初始化、少用多层指针)

    C 入门基础04 代码实战经验分享 全局变量与局部变量重名 静态变量 数据类型选取 养成变量创建就初始化 少用多层指针 1 全局变量与局部变量重名 include