美文网首页
续第二章(C++)~变量和基本类型

续第二章(C++)~变量和基本类型

作者: 掌灬纹 | 来源:发表于2019-09-25 19:36 被阅读0次

2.3复合类型

前言:真正完整的声明语句--》由基本数据类型 + 声明符列表(指定变量名,还有该变量与基本数据类型之间的关系)

2.3.1引用

引用:变量的别名,通过&字符声明,别名就指的是引用不是一个对象,对引用或变量的操作都会引起另一方同时变化。
注意的:
1.不能声明引用的引用(因为引用本身不是一个对象)
2.引用在赋初始值时必须要求左右类型一致

2.3.2指针

指针的声明:*d *为关系指定符,d是变量名
指针用来存放某个对象的地址,获取地址符 &

int val, *p = &val; // p 是指向变量 val的指针

解引用符 * 通过指针访问对象
示例:int val, *p = &val; std::cout << *p 等价于 std::cout << val;
重点:理解符号的多重含义
" & " --- 引用的声明 或 取地址符
" * " --- 指针的声明 或 解引用符

关键在于区分使用符号是的语境和具体对象

空指针:C++11新的声明方法 nullptr 关键字 nullptr 可以转换成任意所需类型的指针

指针参与逻辑运算的规则:
(1)任何合法的非空指针做条件判断时皆为true
(2)两个指针可以使用 ==,!=运算符做判断 当两指针存放地址相同时 两指针相等

赋值和指针:
指针和引用不同,指针可以改变内容(地址) 从而指向新的对象
如 int *p = 0, val = 0; p = &val; // 指针的值被改变 *pi = 0; // 指针所指对象的值被改变

void 指针:存放任意对象的地址
常用于指针的比较 函数的参数 输入输出 不能直接操作 void * 所指向的对象

理解复合类型的声明:
指向指针的指针:通过*的个数区别值指针的级别 解引用指针的指针 得到到仍然是一个指针

指向指针的引用:
int i = 10; int *p = &i; int *&r = p; // 说明 r 是一个 指针p的引用


练习

// p50 练习 2.18 编写代码更改指针的值与指针所指向对象的值
#include<iostream>
int main(){
    int val = 10, *p1 = &val; // p1 -> val
    int val2 = 15;
    std::cout << "初始化声明指针*p1 = " << *p1 << std::endl; 
    
    // 更改指针的值 指向 val2
    p1 = &val2; 
    std::cout << *p1 << std::endl;
    
    // 更改指针所指向对象的值 val2
    *p1 = 16;
    std::cout << val2 << std::endl; 
    
    return 0;
} 

// 叙述代码的作用 ~ i = i*i;
#include<iostream>
int main(){
    int i = 42;
    int *p1 = &i;
    *p1 = *p1 * *p1;// i = i*i;
    std::cout << i << " " << 42 * 42 << std::endl;
    return 0;
} 

结构体:自定义数据结构练习

#include<iostream>

struct Sales_data {
    std::string bookNo;
    /*书号*/
    unsigned int units_sold = 0; // c++ 11 类内初始值 不能使用圆括号 
    /*销售数量*/
    double revenue = 0.0;
    /*销售总额*/
    double price = 0.0;
    /*单价*/
};

// 设计程序 读入 两次数据 如果书号相同 
// 打印书号 销售数量 平均销售价格 否则 打印错误信息 
int main(){
    Sales_data data1, data2;
    std::cin >> data1.bookNo >> data1.units_sold >> data1.price;
    std::cin >> data2.bookNo >> data2.units_sold >> data2.price;
    data1.revenue = data1.units_sold * data1.price;
    data2.revenue = data2.units_sold * data2.price;
    std::cout << "data1 revenue : " << data1.units_sold * data1.price << std::endl;
    std::cout << "data2 revenue : " << data2.units_sold * data2.price << std::endl;
    if(data1.bookNo == data2.bookNo){
        std::cout << data1.bookNo << " average revenue ";
        double total = ((data1.revenue + data2.revenue) / (data1.units_sold + data2.units_sold));
        std::cout << total << "$" << std::endl;
        return 0;
    }else{
        std::cout << "Data must refer to the same ISBN" << std::endl;
        return -1; 
    }
    
}

头文件处理:

示例

#ifndef SALES_DATA_H
#define SALES_DATA_H
#include<string>
struct Sales_data{
    std::string bookNo;
    /*书号 ISBN*/
    unsigned int units_sold = 0;
    /*销售数量*/
    double revenue = 0.0;
    /* 收益 */
    
};
#endif

// ifndef endif 均为头文件保护符 

尝试一下使用自定义的头文件做个书店的小项目吧~~~~~

相关文章

  • c++ primer

    2 变量和基本类型。 2.1 变量和基本类型。 c++定义了一套 算术类型和空类型,算术类型主要是整型(包括boo...

  • 续第二章(C++)~变量和基本类型

    2.3复合类型 前言:真正完整的声明语句--》由基本数据类型 + 声明符列表(指定变量名,还有该变量与基本数据类型...

  • C++ 变量和复合类型

    前面说了C++的基本数据类型,下面来看看在C++中如何定义变量和常量。 变量 定义和初始化 C++定义变量的方式和...

  • 《C++ Primer》读书笔记

    前言 把《C++ Primer》读薄系列笔记全集。 目录 第I部分:C++基础 开始学习C++ 变量和基本类型 字...

  • 1.c++基础(1)

    2.变量和基本类型 3.字符串、向量和数组 4.表达式 5.语句 2.变量和基本类型 c++的算术类型: 一个ch...

  • Python学习(二)

    第二章 基础语法 2.1 数据类型 2.1.1 Python变量的赋值和基本数据类型 Python中的变量不需要声...

  • 第二章(C++)~变量和基本类型

    学习并掌握一门编程语言,理解语法特征的实现细节是第一步 2.1 基本内置类型 c++的常用算术类型:int, sh...

  • C++ primer 第二章变量和基本类型

    初始化和赋值,初始化不是赋值,因为都是用“=”而混淆, 类型别名:typedef的作用std::tuple ::c...

  • C++ Primer 第二章

    第二章 变量和基本类型 2.1 基本内置类型 2.3.3 定义对象 初始化有直接初始化和复制初始化;复制初始化的语...

  • C++Primer

    未完每日更新 第二章:变量和基本类型 2.4 const //file1.cc// int counter;//f...

网友评论

      本文标题:续第二章(C++)~变量和基本类型

      本文链接:https://www.haomeiwen.com/subject/fnukuctx.html