c++代码中“引用”的使用

这些上机实验在Qt5.9上完成的,具体步骤

  • 结构体引用
#include <iostream>
#include<stdlib.h>
using namespace std;
struct mycoach
{
    string name;
    int age;
};

void *addcoachinfo(mycoach * &cpc,string name,int age)
{
    cpc=(mycoach*)malloc(sizeof(mycoach));
    cpc->name=name;
    cpc->age=age;
    cout<<"大家好我是"<<cpc->name<<"今年芳龄"<<cpc->age<<endl;
    free(cpc);
    cpc=NULL;
}

int main()
{
    mycoach *cpc=NULL;
    addcoachinfo(cpc,"陈培昌",22);
    return 0;
}

  • 引用分为普通引用和常引用
int main()
{
    int a=10;
    int &aa =a;
    aa=88;
    printf("%d\n",aa);
    return 0;
}

常引用的目的往往是不希望被修改

引用实际上是内存的别名,由于字面量没有地址,因此第9行的代码有误

正确的做法是第10行

函数中常引用,目的是让实际参数只拥有只读属性

  • 对指针的引用
#include <iostream>

using namespace std;

struct mycoach
{
    string name;
    int age;
};

int main()
{
    mycoach *cpc = (mycoach*)malloc(sizeof(mycoach));
    cpc->name="陈培昌";
    mycoach * &wr=cpc;
    wr->name="魏锐";
    cout <<cpc->name<< endl;
    return 0;
}

  • 对比:常量引用
#include <iostream>

using namespace std;

struct mycoach
{
    string name;
    int age;
};

void showinfo(const mycoach &cpc)
{
    //cpc.name="中国队长";如果去掉注释就报错,常量不可修改
    cout<<"hello! I‘m"<<cpc.name<<endl;
}

int main()
{
    mycoach *cpc = (mycoach*)malloc(sizeof(mycoach));
    cpc->name="陈培昌";
    const mycoach &wr=*cpc;//常量引用只能引用字面量
    showinfo(wr);
    return 0;
}

原文地址:https://www.cnblogs.com/saintdingspage/p/12000294.html

时间: 2024-11-09 00:45:24

c++代码中“引用”的使用的相关文章

Windows Store App 全球化:在后台代码中引用字符串资源

上文提到了引用字符串资源具有两种方式,分别是在XAML元素中和在后台代码中引用资源文件中的字符串资源.在第一小节已经介绍了如何在XAML元素中引用字符串资源,本小节将讲解在后台代码中引用字符串资源的相关知识点. 下面通过一个示例直接讲述如何在后台代码中引用资源文件中的字符串资源.新建一个Windows应用商店的空白应用程序项目,并命名为StringResourcesInCode.在项目中新建一个名为"Strings"的文件夹,在"Strings"文件夹下新建名为&q

在awk代码中引用shell变量的方法

一个香栗子胜过千言万语 #!/bin/bash foo="Good" # 不带空格 bar="Hello World" # 带空格 awk 'BEGIN { print "'$foo'"; "'"$bar"'" }' 上面的栗子中,保持了用单引号把awk代码包围起来的惯例. 在awk代码中引用shell变量时, 使用一对双引号,内嵌一对单引号, 再在这一对内层单引号里面按$var(适用于不含空格的shell

在代码中引用资源

Resources resources=getBaseContext().getResources(); int color=resources.getColor(R.color.colorAccent); String string=resources.getString(R.string.helloWorld); TextView textView= (TextView) findViewById(R.id.textView); textView.setBackgroundColor(col

XAML引用隐藏代码中的类,遇到的不明报错

<Canvas x:Name="Canvas1"  > <Canvas.Resources> <local:BookList x:Key="bl" BookName="Danieltonight" ISBN="123"/> </Canvas.Resources> <TextBox Text="{Binding Path=BookName}" Width=

PHP字符串中引用变量问题

php中字符串引用变量主要是数据库操作字符串的不同 1,普通字符串引用变量 a.外层必须引用双引号 b.字符串中的变量可写如:$s 或者{$s} 2.数据库操作字符串(数据库操作指令) a.字符串外层必须使用双引号 b.变量必须用大括号{}(赋值字符串属性时除外) 如: `    c.当需变量与数据库属性相赋值或者作逻辑运算时,需要对应数据属性的类型:如     上述代码中数据库中的属性 title,authordid,content均为字符串,所以变量要用单引号'{$title}'或者'$ti

C++中引用的底层实现

为了研究一下C++中引用的底层实现,写了一个小代码验证其中的基本原理. 引用是一个变量的别名,到底会不会为引用申请内存空间?如果申请空间,空间存放的是什么,下面的代码就主要解决这个疑问. 代码如下,详细见代码注释 1 #include <iostream> 2 #include<string> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 7 class Test 8

关于C++代码中的#pragma预处理指令

预处理指令是指在编译器编译代码时,提供按条件跳过源文件中的代码段(节).报告错误(错误信息以及行号)和警告条件,以及描绘源代码的不同区域的能力. 总是占用源代码中的单独一行,并且总是以 # 字符和预处理指令名称开头.# 字符的前面以及 # 字符与指令名称之间可以出现空白符. 下面是可用的预处理指令: #define 和 #undef,分别用于定义和取消定义条件编译符号. #if.#elif.#else 和 #endif,用于按条件跳过源代码中的节. #line,用于控制行号(在发布错误和警告信息

C++中引用(&)的用法和应用实例

C++中引用(&)的用法和应用实例 对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法.在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的. 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确.灵活地使用引用,可以使程序简洁.高效.我在工作中发现

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

文章大纲 在xml中声明bean和注入bean 在xml中声明bean和自动注入bean 自动扫描bean和自动注入bean 对自动扫描bean增加约束条件 首次接触spring请参考 Spring 3.0 学习-环境搭建和三种形式访问 1.典型的Spring XML 配置文件表头 <?xml version="1.0" encoding="UTF-8"?><!-- 一般化的Spring XML 配置 --> <beans xmlns=