IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 3DProgramming第一次课数据类型20210830 -> 正文阅读

[C++知识库]3DProgramming第一次课数据类型20210830


前言

课程目的:进一步掌握C++语言程序开发,在此基础上掌握面向对象思想和OpenGL的三维交互程序的开发。学会基于OpenGL SDK项目开发,学会通过打断点调试方式解决实际开发过程中遇到的问题。

课程时间安排在这里插入图片描述在这里插入图片描述
主要内容:

  • 自定义数据类型
  • 函数
  • 类和对象
  • 类的封装、继承、多态
  • 摄像机类
  • 模型导入类(静态模型、动态模型)
  • 纹理贴图类
  • 程序框架类
  • 粒子特效类
  • 开发三维漫游程序(如三维小游戏或者三维互动程序)

一、程序的开发过程?

  1. 源程序通过借助翻译程序加工成为目标程序(结果程序)。

  2. 三种不同类型的翻译程序

    (a)汇编程序:用来翻译用汇编语言写的源程序
    (b)编译程序:用来翻译用高级程序设计语言写的源程序。
    (c)解释程序:同样是翻译用高级程序设计语言写的源程序,它与编译程序的不同点在于:它是边翻译边执行的。

  3. 程序的开发过程:编辑、编译、连接、运行调试。

二、基本数据类型

1.char、int、float、double

sizeof(char)=1
sizeof(int)=4
sizeof(float)=4
sizeof(double)=8

常见的指针类型都是占用四个字节的。

2.基本数据类型——指针

  • 什么是内存地址?
    内存地址是一个唯一的代表某个存有数据的内存单元的数值编码。

  • 什么是指针变量?
    指针变量是一个存储计算机内存地址的变量。

  • 什么叫做指针的取值?
    从指针指向的内存读取数据称作指针的取值。

  • 指针类型(int* float*)
    指针也可以是void类型、NULL指针和未初始化的指针。
    void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
    NULL 指针是一个定义在标准库中的值为零的常量。

代码如下(示例):

    int *ip;
	float *fp;
	char *cp;
	char *pstr = "Hello world";
	cout << sizeof(ip) << endl;//4   指针都是占用四个字节的内存空间
	cout << sizeof(fp) << endl;//4
	cout << sizeof(cp) << endl;//4
	cout << sizeof(pstr) << endl;//4
	cout << strlen(pstr) << endl;//11 如果没有中间的空格就是10,计算字符串的实际长度


三、自定义数据类型(enum typedef、struct、union、class)

1、枚举类型——enum

  • 声明形式: enum 枚举类型名 {变量值列表};
  • 对枚举变量按照常量处理,不能对他们赋值。例如:Sun=0;但是可以在声明的时候另行指定枚举元素的值,之后就不可以了,如:enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
  • 枚举值可以进行关系运算。
  • 整数值不能直接赋给枚举变量,得强制类型转换。
    但是枚举元素可以直接赋给整型变量。
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;

enum enum_Weekday { Sunday = 7, Monday = 1, Tuesday, Wednsday, Thursday, Friday, Saturday };//定义一个星期的枚举类型


int main()
{
	int a;
	enum enum_Weekday day;  //定义一个星期枚举类型的变量
	day = (enum_Weekday)5;//强制类型转换  整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。
	//day = Saturday;

	a = Monday;  //整数值不能直接赋给枚举变量(要强制类型转换),但是枚举元素可以赋给整型变量
	cout << day<<endl;
	cout << a << endl;

    return 0;
}

2、typedef

四大用法

  • 给已定义的变量类型起个别名
  • 定义函数指针类型
  • 定义数组指针类型
  • 定义数组类型

详细请见 https://blog.csdn.net/qq_31073871/article/details/81258558

3、struct

struct Stu
{
int xuehao;
char* pName;
char score[10];
};
struct Stu stu1;
struct Stu
{
int xuehao;
char* pName;
char score[10];
}stu1;
typedef struct stu
{
int xuehao;
char *pName;
char score[10];
} Stu_Struct,*pStu_Struct;
Stu_Struct stu1,stu2;
pStu_Struct pstu1;

struct 的对齐方式
https://blog.csdn.net/d04421024/article/details/5644945

各变量存放的起始地址相对于起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。(为了提高CPU的存储速度)
一般来说,struct所占用的字节数不会粗暴地等于各成员变量所占用的字节数之和。

  • 结构体占用的内存大于等于所有成员占用的内存总和(成员之间可能存在缝隙)

举例:

struct MyStruct
{
    double dda1;
	char dda;
	int type;
};
sizeof(MyStruct)=16  //而不是等于粗暴地相加8+1+4=13

4、union共用体

union 共用体名
{
数据类型 成员名;
数据类型 成员名;

}变量名;

  • 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
  • 结构体占用的内存大于等于所有成员占用的内存总和(成员之间可能存在缝隙)。共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新成员赋值,就会把原来的值覆盖掉。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:19:43  更:2021-09-04 17:20:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:40:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码