C++菜鸟日记1

news2024/10/5 5:23:25

共用体:

#include<iostream>
using namespace std;
int main()
{
	struct widge
	{
		char brand[20];
		int type;
		union id
		{
			long id_num;
			char id_char[20];
		}id_val;

	};

	widge prize;
	cout << "Please cin the prize.type mumber:" << endl;
	cin >> prize.type;
	if (prize.type == 1)
	{
		cout << "Please cin the prize.id_val.id_num mumber:" << endl;
		cin >> prize.id_val.id_num;
	}
	else
	{
		cout << "Please cin the prize.id_val.id_char mumber:" << endl;
		cin >> prize.id_val.id_char;
	}

	

	return 0;
	system("pause");

}

枚举

1.枚举可以用来干什么,可以以常量符号的方式代替数值,可以清晰的知道数值的含义,本质是是一种创建常量符号的类型,和结构体类似的用法。

请看代码示例可以更好的帮助理解,这里强烈推荐菜鸟教程,上面有案例看的清晰明了。

1.用于swich语句:

#include <iostream>
using namespace std;

// Declare the enumerated type
enum Roster { Tom = 1, Sharon, Bill, Teresa, John };
// Sharon - John will be assigned default values 2-5.

int main()
{
    int who;
    cin >> who;
    switch (who)
    {
        case Tom :
            cout << "Tom's birthday is January 3.\n";
            break;
        case Sharon :
            cout << "Sharon's birthday is April 22.\n";
            break;
        case Bill :
            cout << "Bill's birthday is December 19.\n";
            break;
        case Teresa :
            cout << "Teresa's birthday is February 2.\n";
            break;
        case John :
            cout << "John's birthday is June 17.\n";
            break;
        default :
            cout << "Invalid selection\n";
    }
    return 0;
}

2.为有意义的整数起一个别名,简化代码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.OOP和过程开发的区别在哪里?

OOP是在运行时决策,过程开发是在编译时决策,举个例子,要为一个数组分配内存,但是经验情况是20个元素足够,但是也有200个元素情况的出现,所以为了保险起见,过程编程在一开始把数组定义为200个元素,但是这种情况会造成大多数情况浪费了很多内存,而OOP编程将决策推迟到运行阶段,在程序运行时告诉它此次需要20元素的数组,在下次告诉它需要200个元素的数组。

为了使程序在运行阶段可以确定数组大小,可以使用关键字New来申请正确大小的内存,并使用指针来跟踪新分配内存的位置。

这也说明了C++比c语言更方便简介。

4.7 指针和自由存储空间

问1: 计算机存储数据必须跟踪哪三个属性?
指针是跟踪哪个属性的?
常规变量的地址怎么获得?
home是一个变量,其地址怎么表示?

使用常规变量时,值和地址哪个是指定量哪个是派生量?

OOP编程和过程编程有什么区别?
哪个决策在运行阶段?编译阶段?举个例子,为一个经验数组的个数分配元素个数。

指针和数组的关系

#include<iostream>
using namespace std;
int main()
{
	int* pt = new int[10];//给指针开辟一个数组
	*pt = 5;
	cout << "*pt = 5时," << *pt << "   此时pt[0]="<<pt[0]<<endl;
	pt[0] = 6;
	cout << "pt[0] = 6时," << pt[0] << "   此时*pt= " << *pt << endl;
	pt[9] = 44;
	cout << "pt[9] = 44时," << pt[9] << "   此时*pt=" << *pt << endl;
	cout << "*(pt+9)=" << *(pt + 9) << endl;
	int coasts[10];
	*(coasts + 4) = 23;
	cout << "coasts=" << coasts << "  *coasts= "<<*coasts<<endl;
	cout << "*(coasts + 4) = 23时," << "coasts[4]=" << coasts[4] << endl;

	return 0;
	system("pause");
}

在这里插入图片描述

当为指针在内存空间开辟一个动态数组,则此时的指针变量名,可以代替数组名,可以用索引的方式对匿名数组进行赋值,但是指针名时数组的第一个元素地址,想要其指向别处要用语句:*(pt + 9)

关于枚举问题

今天编写程序时,遇到一个问题,能不能把枚举的字符常量给打印出来,查了资料,不能打印,打印出来只能是Int类型
1.枚举的声明和结构的申明一样,都是 关键字 类型名 {};
2.枚举{}里面是离散数字代表的标识符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
枚举常用在switch语句中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

01Linux基础

附件:day26–linux入门.pdf Linux是 基于Unix 的开源免费的操作系统&#xff0c;由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。 &#xff08;程序基本上在Linux上发布&#xff09; Linux系统的应用非常广泛&#xff0c;不仅可以长时间的运行我们编写的程序代…

【C++14算法】make_unique

文章目录 前言一、make_unique函数1.1 什么是make_unique?1.2 如何使用make_unique?1.3 make_unique的函数原型如下&#xff1a;1.4 示例代码示例1: 创建一个动态分配的整数对象示例2: 创建一个动态分配的自定义类型对象示例3: 创建一个动态分配的数组对象示例4: 创建一个动态…

STM32 CubeMX PWM三种模式(互补,死区互补,普通)(HAL库)

STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09; STM32 CubeMX STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09;一、互补对称输出STM32 CubeMX设置代码部分 二、带死区互补模式STM32 CubeMX设置代码 三、普通模式STM32 CubeMX设置代码部分 总结 一、互补对称输…

2023.10.12

#include <iostream>using namespace std; //定义动物类 class Animal { private:string name; public:Animal(){}Animal(string name):name(name){}~Animal(){}//定义虚函数virtual void perform()0;//表演的节目void show(){cout << "Please enjoy the spec…

平衡二叉树(AVL) 的认识与实现

文章目录 1 基本1.1 概念1.2 特点1.3 构建1.4 调整1.4.1 RR1.4.1.1 示例1.4.1.2 多棵树不平衡 1.4.2 LL1.4.2.1 示例 1.4.3 LR1.4.3.1 示例 1.4.4 RL1.4.4.1 示例 1.5 实现1.5.1 示例1.5.2 完善 1 基本 1.1 概念 平衡二叉树是一棵合理的二叉排序树 解释 对于这么一个序列 如…

2023 | github无法访问或速度慢的问题解决方案

github无法访问或速度慢的问题解决方案 前言: 最近经常遇到github无法访问, 或者访问特别慢的问题, 在搜索了一圈解决方案后, 有些不再有效了, 但是其中有几个还特别好用, 总结一下. 首选方案 直接在github.com的域名上加一个fast > githubfast.com, 访问的是与github完全相…

03-RocketMQ高级原理

目录汇总&#xff1a;RocketMQ从入门到精通汇总 上一篇&#xff1a;02-RocketMQ开发模型 前面的部分我们都是为了快速的体验RocketMQ的搭建和使用。这一部分&#xff0c;我们慢下来&#xff0c;总结并学习下RocketMQ底层的一些概念以及原理&#xff0c;为后面的深入学习做准备。…

使用宝塔面板在Linux上搭建网站,并通过内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

4种实现JS深拷贝的方法

浅拷贝与深拷贝 浅拷贝是创建一个新对象&#xff0c;这个对象有着原始对象属性值的拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff0c;如果属性是引用类型&#xff0c;拷贝的是内存地址 。 如果不进行深拷贝&#xff0c;其中一个对象改变了对象的值&am…

使用VS2019测试cJson库

1.代码 //cJson_Test.cpp // cJson_Test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream>#include <stdio.h> #include "cJSON.h"int main(void) {cJSON* cjson_test NULL;cJSON* cjson_address NULL;cJ…

深入理解强化学习——序列决策(Sequential Decision Making)

分类目录&#xff1a;《深入理解联邦学习》总目录 在本文中我们将介绍序列决策&#xff08;Sequential Decision Making&#xff09;过程中的各个过程。 智能体与环境 强化学习研究的问题是智能体与环境交互的问题&#xff0c;下图左边的智能体一直在与下图右边的环境进行交互…

springboot农机电招平台springboot37

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

【Debian】报错:su: Authentication failure

项目场景&#xff1a; 今天我重新刷了一个debian系统。 系统版本&#xff1a; # 查看系统版本 lsb_release -a 我的系统版本&#xff1a; No LSB modules are available. Distributor ID&#xff1a;Debian Description: Debian GNU/Linux 12 &#xff08;bookworm&#xff…

使用LLM在KG上进行复杂的逻辑推理10.12

使用LLM在KG上进行复杂的逻辑推理 摘要介绍相关工作 摘要 在知识图谱上进行推理是一项具有挑战性的任务&#xff0c;这需要深度理解实体之间复杂的关系和它们关系的逻辑。而当前的方法通常依赖于学习 几何形状 以将实体嵌入到向量空间中进行逻辑查询操作&#xff0c;但在复杂查…

ChatGLM:向量化构建本地知识库原理

一、概念 1.向量&#xff1a;是有大小和方向的量&#xff0c;可以使用带箭头的线段表示&#xff0c;箭头指向即为向量的方向&#xff0c;线段的长度表示向量的大小。 2.向量化&#xff1a;将语言模型的数据转化为向量。这通常通过嵌入模型&#xff08;embedding models&#…

【算法-动态规划】0-1 背包问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

解锁 OpenAI 密钥的新利器:OpenAI Key 有效性查询工具,支持GPT4

在寻找新的创意或解决问题时&#xff0c;OpenAI 的 GPT 模型是一个强大的工具。但是&#xff0c;一旦您拥有了自己的 OpenAI 密钥&#xff0c;您可能会遇到一个常见的问题 - 如何验证您的密钥是否有效&#xff1f;这个问题可能令人困扰&#xff0c;但不必再担心了。现在&#x…

多功能按键中断

key1 开关实现led1亮灭,key2开关实现蜂鸣器开关,key3开关实现风扇开关 main.c #include "uart.h" #include "key_it.h" #include "led.h" int main() {char c;char *s;uart4_init();//串口初始化all_led_init();key_it_config();fengshan_init…

Day 05 python学习笔记

循环 应用&#xff1a;循环轮播图 最基础、最核心 循环&#xff1a;周而复始&#xff0c;谓之循环 (为了代码尽量不要重复) while循环 while的格式 索引定义 while 表达式&#xff08;只要结果为布尔值即可&#xff09;&#xff1a; 循环体 通过条件的不断变化&#xff0c;从…

1315. 网格 - 卡特兰数

1315. 网格 - AcWing题库 只要是触及上面这条红线的&#xff0c;就以第一次触及的点为起点沿红线反转&#xff0c;终点的位置与红线对称的位置可以看作触及红线的路线的终点。 yx1 横坐标容易得出时m - 1&#xff0c;&#xff08;m n&#xff09; - (m - 1)得出纵坐标n 1 …