【ThinkingInC++】56、函数中的引用

引用的三个规则

当引用被创建的时候,它必须被初始化

一旦一个引用被初始化为指向一个对象,他就不能改变另一个对象的引用

不可以有NULL引用。必须确保引用是和一块合法的存储单元关联

以上指针都可以

Reference.cpp

/**
* 书本:【ThinkingInC++】
* 功能:函数中的引用
* 时间:2014年9月21日17:12:34
* 作者:cutter_point
*/

/*
1、当引用被创建的时候,它必须被初始化
2、一旦一个引用被初始化为指向一个对象,他就不能改变另一个对象的引用
3、不可以有NULL引用。必须确保引用是和一块合法的存储单元关联
*/

int* f(int* x)  //返回一个int指针,参数是一个指针
{
    (*x)++;     //指针指向的数据加1
    return x;   //返回地址
}

int& g(int& x)  //int类型的引用,返回一个int的引用
{
    x++;        //int型的数据+1
    return x;   //int型的数据返回去
}

int& h()
{
    int q;
//    return q;    //Error:这个编译没有错,但是实际是错的,因为q是局部的,出了函数引用为null,引用是不能为空的所以为出错
    //当要使用q的时候,就会出错
    static int x;   //静态存储区,具有全局效果
    return x;
}

int main()
{
    int a=0;
    f(&a);
    g(a);

    return 0;
}
时间: 2024-11-08 04:21:32

【ThinkingInC++】56、函数中的引用的相关文章

<转>关于 error LNK2019:无法解析的外部符号 ,该符号在函数**中被引用的思考

错误提示信息摘抄如下: -------------------------------------------------------------------------------------------------- 错误         12     error LNK2019: 无法解析的外部符号 [email protected], 该符号在函数"public: class activemq::util::Guid & __thiscall activemq::util::Gu

error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 .... 中被引用....

VS中出现:error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 .... 中被引用....的编译错误是,一般是是因为PlaySound函数在Winmm.lib库中,所有需要需要链接库,以下方法可解决: 1.头文件中声明:#pragma comment(lib, "winmm") 2.菜单Project --> Settings...-->Link标签-->Object/Library modules:中加入Winmm.l

Java中的引用和C++中引用的区别

首先了解C++ 中引用的含义:"引用"即"别名".C++中的引用代表的就是实际的存储空间.对其进行操作就是对存储空间进行操作. 而在Java中的引用:可以看做是C语言中的"指针"或者"地址".对java中引用的属性(即指针指向的存储空间)进行操作才是有效的. 1)Java引用作为函数(方法)参数 Java的方法参数只是传值,引用作为参数使用时,会给函数内引用的值的COPY,所以在函数内交换两个引用参数是没有意义的,因为函数交换

shell编程:向函数中传递参数

cal.sh sh cal.sh 20 + 10 实现这样传参的函数(shell不是一个严谨的编程语言,参数这种是不用定义的,函数中直接引用,shell执行中直接写) #!/bin/bash # cal() { case $2 in +) echo "`expr $1 + $3`" ;; -) echo "`expr $1 - $3`" ;; \*) echo "`expr $1 \* $3`" ;; /) echo "`expr $1

错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 解决方法

晚上花几分钟在windows下测了下pthread的用法,出现错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 经网上搜,反正都没解决,其中一个说引入#pragma comment(lib, "pthreadVC2.lib")后解决,但笔者遇到的不是这个原因,而是版本问题.可参考http://www.cnblogs.com/zhjh256/p/6364777.html解决.

无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用

一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用 Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol [email protected]在自己创建新工程的时候经常在开始选择win32控制台程序还是win32

error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 _wmain 中被引用

1>sockett.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 _wmain 中被引用 解决方法: 没有加入相应的链接库,winmm.lib.在头文件添加 #pragma comment(lib,"ws2_32.lib") ws2_32.lib文件,提供了对以下网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程(否则需要动态载入ws2_32.dll).有时无法直接对头文件进行修改.在引

无法解析的外部符号 _ ,该符号在函数 " __main中被引用 && This function or variable may be unsafe.

加上winsock2的运行库看看吧,一般不用加的啊 #pragma comment(lib,"Ws2_32.lib") 应该就没有问题了吧^_^ 以下为转载 http://blog.chinaunix.net/uid-20672257-id-2955771.html 1.将过去的工程用VS2010打开的时候.你有可能会遇到一大堆的警告:warning C4996. 比如:warning C4996: 'sprintf': This function or variable may be

使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录

这几天在使用SDL2,之前一直都没有错,直到上午把项目搬了个地方.结果一直出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” . 看了网上的方法都说是没有正确定义 main 函数 ,这是SDL2main.lib指定需要的函数.结果我把他定义在了"xx.h"这样的头文件中. 原来我一直没理解头文件和源文件的重要区别.把 main 函数定义在 "xx.cpp" 这样的源文件中就可以正确编译了. 看来还需要再