首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

函数返回变量的地址...最终变成了一个不同的变量?

函数返回变量的地址,最终变成了一个不同的变量的原因是因为函数返回的是变量的指针,而不是变量本身。指针是一个存储变量地址的变量,通过指针可以访问和修改变量的值。

当函数返回一个变量的地址时,实际上返回的是该变量在内存中的地址。在函数调用过程中,会创建一个新的变量来存储返回的地址,这个新的变量与原变量具有不同的内存地址。因此,虽然它们指向同一个变量,但它们是不同的变量。

这种情况通常发生在函数中使用指针作为参数,并在函数内部修改指针指向的变量。当函数返回时,返回的是指针指向的变量的地址,而不是指针本身。在函数外部,可以通过返回的地址来访问和修改原变量的值。

函数返回变量地址的优势在于可以通过指针在函数外部访问和修改变量的值,实现了变量的共享和传递。这在一些需要在多个函数之间共享数据的情况下非常有用。

以下是一个示例代码,说明函数返回变量地址最终变成了一个不同的变量的情况:

代码语言:txt
复制
#include <iostream>

int* modifyValue(int* ptr) {
    *ptr = 100;  // 修改指针指向的变量的值
    return ptr;  // 返回指针
}

int main() {
    int value = 10;
    int* ptr = &value;  // 指向变量value的指针

    int* newPtr = modifyValue(ptr);  // 调用函数修改变量的值并返回指针

    std::cout << *newPtr << std::endl;  // 输出修改后的值,输出结果为100
    std::cout << *ptr << std::endl;     // 输出原变量的值,输出结果为100

    return 0;
}

在上述示例中,函数modifyValue接受一个指向整数的指针作为参数,并将指针指向的变量的值修改为100。然后,函数返回指针本身。在main函数中,我们通过调用modifyValue函数并将指针ptr传递给它,得到了返回的指针newPtr。通过输出newPtrptr所指向的变量的值,可以看到它们都被成功修改为100。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(TBC):https://cloud.tencent.com/product/tbc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

函数变量+返回

函数变量: 局部变量 和 全局变量 Python中任何变量都有特定作用域 在函数中定义变量一般只能在该函数内部使用,这些只能在程序特定部分使用变量我们称之为局部变量一个文件顶部定义变量可供文件中任何函数调用...,这些可以为整个程序所使用变量称为全局变量 (1)、局部函数: #!.../usr/bin/python def fun(): x = 100 ##定义一个内部函数是 x = 100,只在fun() 内部有效。...输出结果: {'y': 1, 'x': 11} 函数返回值: 函数被调用后会返回一个指定函数调用后默认返回None 指定return 来返回一个返回值可以是任意类型 一旦return执行后...设计一个函数,接收一个英文单词,从文件中查询该单词汉语意思并返回

4.9K40

函数设计应如何才好,返回临时变量 | 返回引用 | 传递引用

,会发生两次构造函数,一次是 变量t,另外一次是return 前,做一次拷贝构造 tempTest testTemp(){ tempTest t; return t; } 第一种,返回临时变量...,只会发生一次构造函数返回引用 tempTest& testTemp2(){ tempTest * t = new tempTest(); return *t; } 第三种,然后,注意这里变量要用引用...一次是最少了,但是如果返回引用的话,就得注意一个问题,内存泄露,所以不用得时候,要delete掉。返回指针同理。...void testTemp3(tempTest& t){ } 这样的话,只需要一次构造函数,然后,如果是临时变量的话,超过使用范围,还会自动析构,更方便样子。...cout << "testTemp3(tempTest&)"<<endl; tempTest tt4; testTemp3(tt4); 所以,最终,我结论是,需要处理,

2K21
  • 【C++】C++ 引用详解 ④ ( 函数返回 静态变量 全局变量 引用 指针 )

    一、函数返回 静态变量 / 全局变量 引用 / 指针 1、函数返回局部变量引用或指针无意义 上一篇博客 【C++】C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量引用或指针 | 函数...“ 局部变量引用或指针做函数返回值无意义 ) 得出如下结论 : 函数返回值 是 “ 局部变量 引用 或 指针 时 , 是无意义 ; 函数 执行完毕后 , 该 函数对应 栈内存 会被回收..., 相应 局部变量 地址 也有没有了意义 , 此时 , 再持有一个 函数返回 没有意义 引用 / 指针 , 取出值是随机无意义值 ; 2、函数返回静态变量/全局变量引用或指针 函数 返回是..., 返回普通 静态变量 ; fun2 函数 返回 静态变量 引用 ; 上述两个函数 静态变量 生命周期 都是 与 程序生命周期相同 , 只有程序结束时 , 这两个 静态变量内存才会被回收...; 使用 引用 接收 fun2 函数返回引用 , 获取是静态变量引用地址 , 该引用对应内存一直是有效 , 因此可以通过该引用获取到内存中正确 静态变量值 ; 代码示例 : // 导入标准

    21230

    【C++】C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量引用或指针 | 函数 “ 局部变量引用或指针做函数返回值无意义 )

    2、函数返回值特点 函数 返回值 几乎很少是 引用 或 指针 ; 函数 计算结果 经常是借用 参数中 地址 / 引用 进行返回 , 函数 返回值 一般返回一个 int 类型值 , 如果...引用 和 指针 作为 传入 参数 ; 在 main 函数中 , 调用 函数 , 创建一个 变量 , 将 变量 地址 / 引用 传入 函数 , 在函数中通过 指针符号 或者 引用 , 直接修改传入实参..., 也就是 修改 地址 / 引用 指向 内存中数据 , 该操作可以修改 外部 main 函数变量值 ; 如果 想要 在 函数 中 , 返回一个 地址 / 引用 作为返回值 , 这个 地址 /..., 返回 局部变量 地址 / 引用 是无意义 , 一般 函数返回一个 int 值 , 表示 该函数 是否执行成功 , 如果执行失败 , 返回错误码 ( 在哪一步执行失败 ) ; ----..." 引用或指针做函数返回值测试 ---- 下面的 int& getNum2() 函数 , 返回一个引用 , 该 引用 是 局部变量 引用 ; 下面的 int* getNum3() 函数 , 返回一个指针

    41020

    2018-7-18pythoh中函数参数,返回值,变量,和递归

    ,需要用返回值时要定义一个变量接收返回值,如果不接收的话返回值不会打印出来,如: def check():    print("表演人:")    name="songanhua "    return...name a=check()                #变量a用于接收函数返回值 print("检查到的人是%s"%a) 执行到return时函数就自动结束 *************...: variable  变量 函数变量分全局变量和局部变量函数为全局变量函数为局部变量函数中如果需要修改全局变量值,需要先用global+name声明一下全局变量放在定义函数顶部...,函数递归比循环消耗内存 在函数中尽量定义局部变量 开发一个项目一般把项目分成三个部分,分别是: data.py(存放数据文件) tools.py(存放函数文件) main.py(存放函数执行文件...: 定义一个函数表示 一个行为 #在一个函数中可以调用另一个函数,叫做函数相互调用 #在函数也可以调用自己叫做函数递归 #第一种:两个行为是相互独立 # def movie(): #

    2.1K40

    【Python】函数定义和调用、形参和实参、函数返回值、多元赋值、全局和局部变量

    , 但是因为一些原因,最终没能在一起undefined这个朋友,其实 就是我 在这里面,“我有一个朋友“ 就是形参,“我” 就是实参 函数调用是可以有多次,每次调用实参,也是可以不同 函数实参...在 calcSum 内部只进行了计算,而把打印逻辑放到了函数外面,calcSum 把计算结果当做返回值,返回给“函数调用者” - 这里把函数里面算好 5050 赋值给了 result 变量...,C++/Java 都馋哭了 C++/Java 中调用一个函数一次只能返回一个值 C++要想返回多个值,可以通过输出型参数(指针/引用) Java 要想返回多个值,需要把多个值给包装成一个对象,然后再返回这个对象...你们俩在各自圈子里互不影响 函数变量 一个变量有效范围是一定,只在一个固定区域内生效 函数内部变量只在函数内部生效,出了函数就失效了 def getPoint(): x = 10...y = 20 return x, y getPoint() print(x,y) 全局变量和局部变量 虽然名字相同,实际上是不同变量. x = 10

    2700

    【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回相同字符串指针地址相同 )

    全局变量 常量区 查询该 字符串常量是否存在 , 如果存在 , 直接使用该 字符串常量地址 赋值给 char* 指针 , 如果不存在 , 直接在常量区 创建一个字符串 , 然后将地址 赋值给...char* 指针 ; 下面的 2 个程序 , 分别演示 不同字符串常量 和 相同字符串常量 地址区别 ; 一、正常程序 ---- 分别从两个函数中 , 获取两个不同字符串 , 打印出这两个...字符串 内容 及 指针指向地址 ; 代码示例 : #include /* * 函数1 返回字符串 1 */ char *get_str1() { char *p1..., p1, p2); return 0; } 执行结果 : 打印出字符串内容不同 , 字符串指针地址不同 ; p1=abc, p2=123 p1=4210756, p2=4210760 二...、获取相同字符串内容 ---- 如果在 2 个函数中 , 获取 字符串 是相同字符串 ; 此时打印出两个函数指针地址是相同 , 这是因为 获取 字符串 都是从 全局区 中 常量区 中获取

    3.7K10

    一个OLED编程中文显示函数坑(留意变量数据类型范围)

    LCD_ShowChinese64x64(x,y,s,fc,bc,sizey,mode); else return; s+=2; x+=sizey; } } 这样,通过传入字号参数,我们可以灵活根据项目需求配置显示不同字号中文字体...,所谓字模表是由一个定义好结构体组成,结构体中有两个分量,第一个是要显示汉字,第二个是该汉字字库,该函数就是将对应汉字字库数据一个字节一个字节取出来然后发送到LCD显示屏上实现刷屏,由于加上了颜色分量...代表一个字对应字库需要占用24个字节内存,在main函数中编写显示字符串"中景园电子"代码,如下所示: ?...bc 字背景色 sizey 字号 mode: 0非叠加模式 1叠加模式 返回值: 无 ****************...} } } } } continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响 } } 经过一段时间单步调试后,我开始怀疑i变量数据类型

    1.5K31

    一个类如何实现两个接口中同名同参数不同返回函数

    IA {     string GetA(string a); } public interface IB {     int GetA(string a); } 他们都要求实现方法GetA,而且传入参数都是一样...String类型,只是返回一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口: public class X:IA,IB 由于接口中要求方法方法名和参数是一样...解决办法是把其中不能重载方法直接写成接口方法,同时要注意这个方法只能由接口调用,不能声明为Public类型.所以X定义如下: public class X:IA,IB {     public...IB.GetA(string a)//实现IB接口     {         Console.WriteLine("IB.GetA");         return 12;     } } 同样如果有更多同名同参不同返回接口...,也可以通过"接口名.函数名"形式实现.

    2.9K20

    【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入参数要求 | 参数作返回值 )

    讨论问题 : 本章只针对一点进行讨论 , 那就是对两种类型参数修改 , 是否影响到外部变量 ; 传入什么样参数才能修改外部变量 , 即 参数当返回值使用 ; 2 ....指针作为参数和返回值 ---- 指针作为参数和返回值 : 如果是指针作为参数 , 修改 N 维指针指向地址 , 那么需要传入 N + 1 维指针 , 传入指向该 N 维指针 指针参数 ( N + 1...维指针 ) , 才能在函数中修改该 N 维指针指向 ; ① 一维指针参数 : 传入一维指针 , 只能修改指向内存内容 ; 修改一维指针本身指向无意义 ; ② 二维指针参数 : 传入 二维指针 ,...C 语言中参数 分类 : ① 普通变量参数 : C 语言中 普通变量 ( 非指针变量 ) 作为参数 , 只能进行值传递 , 不能通过参数返回结果 ; ② 指针变量参数 : C 语言中 , 如果要让函数参数可以将结果返回...引用作为参数和返回值 ---- 引用作为参数和返回值 : 如果是引用作为参数 , 修改 N 维指针指向地址 , 那么需要传入 N 维指针引用即可 ,在函数中修改该引用 , 即可修改外部被引用变量

    2.2K20

    Swift 与 Kotlin 简单对比,简直是太像了Hello World变量和常量显式类型强制类型转换字符串插值范围操作符区域操作符(for while等)数组map空集合函数返回值参数变量数目

    Swift 语法与 Kotlin 有很多相似之处,整理了一些 Swift 和 Kotlin 对比,下面是一些例子,大家不妨来看看。可以说掌握了kotlin 再去看swift简直爽不要不要。...变量和常量 ? 显式类型 ? 强制类型转换 ? 字符串插值 ? 范围操作符 ? 区域操作符(for while等) ? 数组 ? map ? 空集合 ? 函数 ? 返回值 ? 参数变量数目 ?...函数类型 ? 遍历 ? 排序 ? 命名参数 ? 类声明 ? 类用法 ? 子类 ? 类型检查 ? 模式匹配 ? 类型向下转换 ? 协议 ? 扩展 ? ---- 最后放一张完整图 ?

    1.1K10

    Python函数(一)之杵臼之交

    函数结构:       def 函数名():             函数体             return语句 函数返回值: 可以用于终止函数运行,也可以返回一个值给调用者。...如果函数不写返回值默认返回一个None。 函数return可以返回任意数据类型。 如果return多个值则返回数据类型是元组。 如果return一个数据,返回值是原数据类型。....由此可以总结:当省略默认参数时,虽然多次调用了函数,但是函数都是引用同一块默认参数地址(应该是为了节省内存),当给默认参数传值时候,函数开辟了一个空间给默认参数使用。 函数参数,动态参数。...名称空间 在python解释器开始执行之后,就会在内存中开辟一个空间,每当遇到一个时候,就把量名和值之间关系记录下来,当遇到函数定义时候,解释器只是把函数名读入内存,表示这个函数存在了,至于函数内部量和逻辑...函数只是加载进来,只有当函数被调用和访问时候,解释器才会根据函数内部声明量来进行开辟内部空间,随着函数执行完毕,这些函数内部量占用空间也会随着函数执行完毕而被清空。

    69220

    C语言中把数字转换为字符串 【转】

    printf 和sprintf 都使用格式化字符串来指定串格式,在格式串内部使用一些以“%”开头格式说明符(format specifications)来占据一个位置,在后边参列表中提供相应变量...,最终函数就会用相应位置变量来替代那个说明符,产生一个调用者想要 字符串。...因为spritnf 是个函数,除了前面两个参数之外,后面的参数都不是类型安全函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来到底 是个4 字节整数还是个2 字节短整数...*f", 10, 2, 3.1415926); //产生" 3.14" 打印地址信息 有时调试程序时,我们可能想查看某些变量或者成员地址,由于地址或者指针也不过是个32 位数,你完全可以使用打印无符号整数...&i); 利用sprintf 返回值 较少有人注意printf/sprintf 函数返回值,但有时它却是有用,spritnf 返回了本次函数调用 最终打印到字符缓冲区中字符数目。

    16.7K72
    领券