06-引用

栏目: C · 发布时间: 5年前

我们经常使用#ifndef、#define、#endif来防止头文件的内容被重复包含
◼#pragma once可以防止整个文件的内容被重复包含
◼区别
#ifndef、#define、#endif受C\C++标准的支持,不受编译器的任何限制
有些编译器不支持#pragma once(较老编译器不支持,如GCC 3.4版本之前),兼容性不够好
#ifndef、#define、#endif可以针对一个文件中的部分代码,而#pragma once只能针对整个文件

复制代码

名词解释

◼ 在 C语言 中,使用指针(Pointer)可以间接获取、修改某个变量的值 
◼ 在C++中,使用引用(Reference)可以起到跟指针类似的功能
◼ 注意点 
引用相当于是变量的别名(基本数据类型、枚举、结构体、类、指针、数组等,都可以有引用) 对引用做计算,就是对引用所指向的变量做计算
在定义的时候就必须初始化,一旦指向了某个变量,就不可以再改变,“从一而终” 
可以利用引用初始化另一个引用,相当于某个变量的多个别名 不存在【引用的引用、指向引用的指针、引用数组】
◼ 引用存在的价值之一:比指针更安全、函数返回值可以被赋值
接下来我们再来const--下一讲会专门来讲 字段(ios开发者不会陌生),常引用,数组的引用,表达式的引用
复制代码

常引用const

将main.m 改为mian.mm 文件(以后若是同样的操作,将不再赘述)
◼ const是常量的意思,被其修饰的变量不可修改 
如果修饰的是类、结构体(的指针),其成员也不可以更改
◼ 引用可以被const修饰,这样就无法通过引用修改数据了,可以称为常引用 
const必须写在&符号的左边,才能算是常引用
◼ const引用的特点 可以指向临时数据(常量、表达式、函数返回值等) 
可以指向不同类型的数据 
作为函数参数时(此规则也适用于const指针)
✓ 可以接受const和非const实参(非const引用,只能接受非const实参)
✓ 可以跟非const引用构成重载
◼ 当常引用指向了不同类型的数据时,会产生临时变量,即引用指向的并不是初始化时的那个变量

int a = 20;
int &page = age;
其中page就是一个引用
const 也是老生常谈的问题
int a = 20;
const int *page = age;
page 被 const修饰,则page不可改变了,就是固定的值了

int a = 10;
int *p = &a;
*p = 30;
cout << a << endl;
打印结果:
30
复制代码

数组引用

int array[] = { 10, 20, 30 };
int (&rArray)[3] = array;
cout << array << endl;
cout << &rArray << endl;
打印结果
0x7ffeefbff54c
0x7ffeefbff54c
在函数调用,需要传入数组参数时,就可以传入引用
void testArray(int (&array)[3])
{
    cout << "size:" << sizeof(array) << endl;
    for (int i = 0; i < sizeof(array)/4; i++)
    {
        cout << array[i] << endl;
    }
}
//sizeof 计算对象的大小 是字节为单位的, sizeof(array)/4 就是有多小个int 数据
int array[] = { 10, 20, 30 };
testArray(array);
打印结果:
size:12
10
20
30
复制代码

再举几个:chestnut:(枚举,结构体)

enum Season {
    Spring,
    Summer,
    Fall,
    Winter
};

struct Student {
    int age;
};

Season season;
Season &rSeason = season;
rSeason = Winter;
cout << season << endl;
    
Student stu;
Student &rStu = stu;
rStu.age = 20;
cout << stu.age << endl;
看下打印结果:
3
20

复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JAVA核心技术卷2

JAVA核心技术卷2

Cay S. Horstmann、Gary Cornell / 陈昊鹏、王浩、姚建平 / 机械工业出版社 / 2008-12 / 118.00元

《JAVA核心技术卷2:高级特征》是Java技术权威指南,全面覆盖Java技术的高级主题,包括流与文件、XML、网络、数据库编程、高级Swing、高级 AWT、JavaBean构件、安全、分布式对象、脚本、编译与注解处理等,同时涉及本地化、国际化以及Java SE 6的内容。《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Jav......一起来看看 《JAVA核心技术卷2》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试