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

在C中,如何修改int指针而不将其作为函数的返回值?

在C中,要修改int指针而不将其作为函数的返回值,可以通过传递指向指针的指针或者使用指针的引用来实现。

  1. 传递指向指针的指针:
  2. 传递指向指针的指针:
  3. 在函数modifyIntPointer中,通过传递指向指针的指针ptr,可以在函数内部修改指针的值,并分配内存给指针指向的int变量。
  4. 使用指针的引用:
  5. 使用指针的引用:
  6. 在函数modifyIntPointer中,通过使用指针的引用ptr,可以在函数内部修改指针的值,并分配内存给指针指向的int变量。

以上两种方法都可以实现在函数内部修改int指针的值,而不将其作为函数的返回值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 值 | 函数 间接修改 指针变量 值 | 函数 间接修改 外部变量 原理 )

文章目录 一、直接修改 和 间接修改 指针变量 值 二、函数 间接修改 指针变量 值 三、函数 间接修改 外部变量 原理 一、直接修改 和 间接修改 指针变量 值 ---- 直接修改 指针变量...return 0; } 执行结果 : 二、函数 间接修改 指针变量 值 ---- 函数 间接修改 指针变量 值 , 将 指向一级指针 二级指针 变量 , 传递到 函数形参 ,... 函数 , 使用 * 符号 , 修改 二级指针 指向 一级指针 变量值 ; 注意 : 如果要 修改 一级指针 值 , 必须 传入 指向 一级指针 二级指针 变量 才可以 , 传入一级指针变量...n", p); // 函数 , 简介修改指针值 modify_pointer(p2); // 打印一级指针地址 printf("%d\n", p);...三、函数 间接修改 外部变量 原理 ---- 如果要 修改 一级指针 值 , 必须 传入 指向 一级指针 二级指针 变量 才可以 , 传入一级指针变量 , 不能修改一级指针变量值 ; 这是因为

20.8K10

tolower、toupper、count_if函数总结说明

return 0; } 在上面的示例,我们使用 std::tolower 函数循环遍历字符串每个字符,并将其转换为小写形式。...return 0; } 在上面的示例,我们使用 std::toupper 函数循环遍历字符串每个字符,并将其转换为大写形式。...pred: 一元函数,接受范围内元素作为参数,并返回一个可转换为 bool 值。返回值指示此函数是否对元素进行计数。 函数不应修改其参数。 这既可以是函数指针对象,也可以是函数对象。...返回值: [first,last]应用于pred返回false元素数。 返回类型(iterator_traits::difference_type)是有符号整数类型。...示例,我们使用了自定义 isOdd 函数作为判断条件,但也可以使用 lambda 表达式或其他可调用对象来进行条件判断。

25240

C++ const各种用法总结

[*注意*]但这只对于内部类型而言(因为内部类型返回肯定是一个值,不会返回一个变量,不会作为左值使用,否则编译器会报错),对于用户自定义类型,返回值是常量是非常重要(后面类里面会谈到)。...如果某成员函数不需要对数据成员进行修改,最好将其声明为const 成员函数,这将大大提高程序健壮性。...4.修饰类成员函数返回值 const A operator+(const A &) const; // 前一个const 用来修饰重载函数operator+返回值,可防止返回值作为左值进行赋值操作。...,不是一般对象实例,原因同上; 4.const成员函数三种用法(参数、返回值函数)要很好使用; 5.不要轻易函数返回值类型定为const; 6.除了重载操作符外一般不要将返回值类型定为对某个对象...const定义常量从汇编角度来看,只是给出了对应内存地址,不是象#define一样给出是立即数,所以,const定义常量程序运行过程只有一份拷贝,#define定义常量在内存中有若干个拷贝

1.9K10

Go 结构体函数调用底层实现

值接收器函数 下面我们来看一下结构体作为函数接收器如何进行函数调用,包括如何如何传递参数和返回值如何进行值接收器和指针接收器转换等。...; 接着是使用 CALL 指令调用 User addAgeVal 函数,CALL 指令会将函数返回值地址推到栈顶,也就是会存储栈 +40(SP) 位置上; 最后会将其值加载到 +60(SP)...BP; 初始化函数返回值,因为是其类型是 int32,所以将其设置为对应零值,栈空间地址是 +64(SP); 从 +48(SP) 位置加载函数接收器 User 变量 Age 到 AX 寄存器,然后将其函数参数...如上图所示,可以看到指针接收器函数调用时,只需要将其地址作为默认参数进行传递,所以函数对接收器修改,都是直接修改在原值上。...此外,调用 addAgePtr 场景是值变量上调用指针接收器函数,我们看到编译器将值地址取出作为接收器参数进行传递,如果是指针变量调用值接收器函数的话,则会先对指针进行取地址,然后再将指针指向值数据进行拷贝

77410

面试爱问之const关键字

const修饰全局变量存放在全局(静态)存储区,编译期最初将其保存在符号表,第一次使用时为其分配内存,程序结束时释放。...因此,有三种情况可讨论: 1、函数参数为值传递: 值传递(pass-by-value)是传递一份参数拷贝给函数,因此不论函数体代码如何运行,也只会修改拷贝而无法修改原始对象,这种情况不需要将参数声明为...根据上面对指针常量、常量指针等讨论,同样分为三种情况: 2.1 防止修改指针指向内容 典型C函数:char *strcpy(char *dest, const char *src); 2.2 防止修改指针指向地址...2.3 防止修改指针指向内容和地址 4.修饰函数返回值 1、如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时存储单元,加const 修饰没有任何价值。...2、如果给以“指针传递”方式函数返回值加 const 修饰,那么函数返回值(即指针内容不能被修改,该返回值只能被赋给加const 修饰同类型指针

17920

C语言作业详解12_17(题型对应知识点)

形参不能为表达式,C语言中,形参可以是变量或指针,但不能是常量或表达式。形参用于接收函数调用传递实际参数值。 C、正确。实参可以为任意类型为形参传值,但要确保D类型一致问题。 D、正确。...四、有返回值函数使用 A、函数调用可以作为独立语句存在,这表示我们可以仅仅调用一个函数接收其返回值。...B、函数调用可以作为一个函数实参,这意味着我们可以将一个函数调用作为另一个函数参数传递。 C函数调用可以出现在表达式,这意味着我们可以用函数调用返回值参与到表达式运算。 D、错误。...因此, fun 函数执行过程,对形参 a、b、c 修改不会对变量 x、y、z 产生影响。...八、函数定义 A. int f(int x;int y) — 这个选项使用了分号 ; 不是逗号 , 来分隔参数,这是语法错误 B、int f(int x, y) — 这个选项函数定义只给出了一个参数

8610

C++】C++入门

(带有缺省参数)函数定义和声明 a. 带有缺省参数函数定义和声明时,C++有特殊规定,函数声明部分写出缺省参数,函数定义部分写缺省参数,如下面代码所示。 b....那么链接时遇到函数,编译器是依靠什么来找到函数地址呢?依靠其实就是函数名,每个函数名又都有自己函数名修饰规则,我们接下来用gcc和g++编译器看一下汇编代码函数名是如何修饰。...C++可以通过函数名修饰规则,来区分同名函数。只要参数(个数、类型、类型顺序)不同,汇编底层修饰出来函数名就不一样,也就支持了函数重载。 4.返回值不同能否构成函数重载?...利用引用作为返回值修改返回值场景。...引用比指针使用起来相对更安全 六、内联函数建立函数栈帧函数,已经不是正常函数了) 1.替代C语言中C语言中书写时,由于宏是单纯替换,所以导致很容易出问题,例如下面,我们写一个实现两数之和

2.8K30

C++初阶-入门基础语法

函数参数类型,个数,顺序三者满足其中之一即可) 错误示例: 名字修饰 C/C++能否支持重载在于其能否链接时成功找到对应函数地址,而这又关乎函数名字修饰规则 注:关于程序如何生成知识有问题的话...,链接对应函数地址时则会有歧义,无法链接成功,也就无法支持函数重载 采用C++编译器编译后结果 说明:linux下,采用g++编译完成后,函数名字修饰发生改变,编译器将函数参数类型信息根据规则添加到修改名字...linux复杂,但本质上原理都是一致;也因为函数名字修饰规则,函数重载要求参数不同,而跟返回值没关系 extern “C” 有时候C++工程可能需要将某些函数按照C风格来编译,函数前加...return n; } 参数和返回值比较    以值作为参数或者返回值类型,传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型...是C++11作为新关键字引入 C++11,sizeof(nullptr) 与 sizeof((void*)0)所占字节数相同 为了提高代码健壮性,在后续表示指针空值时建议最好使用nullptr

67320

C++修炼之路】1. 初窥门径

cout << "f(char b, int a)" << endl; } 对于参数类型顺序来说,这种方式作为参数传入时会因顺序不同调对应顺序函数C语言中,char也属于整型变量,而在重载中就有了明显区分...采用C++编译器编译后结果 结论:linux下,采用g++编译完成后,函数名字修饰发生改变,编译器将函数参数类型信息添加到修改名字。...C++是通过函数修饰规则来区分,只要参数不同,修饰出来名字就不一样,就支持了重载。 如果两个函数函数名和参数是一样返回值不同是构成重载,因为调用时编译器没办法区分。 5....5.6 传值、传引用效率比较 以值作为参数或者返回值类型,传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下...C++98,字面常量0既可以是一个整形数字,也可以是无类型指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void*)0。

99300

const关键字应用总结

C++const关键字用法非常灵活,而使用const将大大改善程序健壮性,const 是C++中常用类型修饰符,常类型是指使用类型修饰符const说明类型,常类型变量或对象值是不能被更新...//对传入参数进行类型检查,匹配进行提示 可以保护被修饰东西 防止意外修改,增强程序健壮性 void f(const int i) { i=10;//error!...//上一个函数重载 }; 可以节省空间,避免不必要内存分配 const定义常量从汇编角度来看,只是给出了对应内存地址,不是象#define一样给出是立即数,所以,const定义常量程序运行过程只有一份拷贝...一般情况下,函数返回值为某个对象时,如果将其声明为const时,多用于操作符重载。 通常,建议用const修饰函数返回值类型为某个对象或对某个对象引用情况。...,原因同上;const成员函数三种用法(参数、返回值函数)要很好使用; 不要轻易函数返回值类型定为const;除了重载操作符外一般不要将返回值类型定为对某个对象const引用; 任何不会修改数据成员函数都应该声明为

49710

C++】——入门基础知识

补充C语言语法不足,以及C++是如何C语言设计不合理地方进行优化,比如:作用 域方面、IO方面、函数方面、指针方面、宏方面等。 2. 为后续类和对象学习打基础。 1....采用C++编译器编译后结果 结论:linux下,采用g++编译完成后,函数名字修饰发生改变,编译器将函数参 数类型信息添加到修改名字。...如果两个函数函数名和参数是一样返回值不同是构成重载,因为调用时编译器没办 法区分。 6....6.5 传值、传引用效率比较 以值作为参数或者返回值类型,传参和返回期间,函数不会直接传递实参或者将变量本身直 接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,...C++98,字面常量0既可以是一个整形数字,也可以是无类型指针(void*)常量,但是编译器 默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0

8910

Block

int  (q); 4.变量前面加一个*号  int  (*q); 回顾:C函数作为一个参数:intsub(intfunc1(void),MySum_tfunc2);sub函数两个参数都是函数...它原来可能是这样:intfunc(int,int); 被用typedef修改后变成了这样:typedefintMySum_t(int,int) 这里有一个规则: 函数指针: // 函数指针 int...*func(); 函数指针和block相似之处:^和* 如何看一个变量类型总结:要查看谁数据类型,将其除去,剩下部分就是它数据类型。...block2(); block访问权限: 对于普通变量,block只能对其进行访问,不能更改,要想对其更改,需要在外部变量名前加__block.注意:是两个下划线。...(很像一个函数——可以保存代码,有参数,有返回值) 2.block可以作为函数参数或者函数返回值,而其本身又可以带参数和返回值。苹果官方建议多使用block。

42720

函数返回值指向一个指针

函数返回值类型必须与函数体内返回表达式类型相匹配。如果类型匹配,编译器会报错。此外,C 语言中函数只能返回一个值,如果需要返回多个值,可以使用结构体或指针等方式来实现。... main() 函数,调用 create_array() 函数将其返回值指向一个整型指针 arr。然后,使用一个循环遍历数组每个元素,并打印出其值。最后,释放数组所占用内存空间。... C 语言中,回调函数是指一个函数指针,它作为参数传递给另一个函数,使得被调用函数可以调用传递进来函数指针来完成一些特定操作。...int (*p)(int, int); 定义了一个名为 p 指向函数指针变量,这个函数返回值类型是 int,有两个整型参数。这个函数指针可以指向一个具有相同返回值类型和参数列表函数。...指针作为参数传递进函数时,实际上传递指针所指向内存地址,函数可以通过指针来访问、修改指针所指向内存数据。 定义了一个名为 swap() 函数,它有两个参数,都是指向整型变量指针

65320

C++ 面试必备:常见 C++ 面试题汇总及详细解析

指针C++一种数据类型,指针变量存储了一个内存地址,该地址指向某个变量或者对象。指针可以用来访问和修改内存数据,同时也可以通过指针来传递参数和返回值。...C语言中,常量指针定义方式为const int* ptr,表示指向int类型常量指针指针所指向地址不能改变,但是可以通过指针修改地址对应值。...指针常量定义方式为int* const ptr,表示指向int类型指针常量,指针所指向地址可以改变,但是不能通过指针修改地址对应值。...int* p = nullptr; // 初始化为空指针 指针使用后及时置空 当指针变量不再使用时,我们应该将其置为空指针,防止误用。这样可以有效地避免产生野指针。...函数参数传递 如果将数组名作为函数参数传递,实际上传递是一个指向数组首元素指针如果将指针作为函数参数传递,可以方便地修改指针所指向对象。

1.8K30

C++从入门到精通——引用(&)

main函数,将变量x传递给increment函数后,x值被递增为11。因为参数是引用类型,所以对i修改会直接影响到x。...函数定义时,使用常引用作为参数,可以防止函数对参数进行修改。 需要注意是,引用作为函数参数时,函数内部对引用修改也会反映到函数外部变量上。...main函数,将变量x传递给print函数后,print函数无法修改x值。这样做可以确保函数不会意外地修改传递给它参数。...,并将其复制到函数返回地方。...五、传值、传引用效率比较 以值作为参数或者返回值类型,传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下

7410

C++类和对象】const成员函数及流插入提取

const修饰类成员函数,实际修饰该成员函数隐含this指针,表明该成员函数不能对类任何成员进行修改。...非const对象可以调用const成员函数 总结: 只读函数可以加const,其内部涉及修改生成,便于const和非const对象调用;涉及对象修改生成函数就不可以加const。...它重载函数应该以 istream&类型作为返回值,并以一个 istream&类型参数(通常是输入流对象)和要提取到数据引用作为参数。...C++中流插入提取操作符重载是不可以重载成成员函数,因为它们参数顺序不可以改变,例如: 这是因为流插入第一个运算符是cout,如果将其重载为成员函数第一个参数就是类和对象隐含this指针...,所以参数顺序匹配,我们只能将其重载成全局函数;与此同时流插入运算符和流提取运算符通常都是以友元函数形式定义声明内部,这允许它们访问类私有成员。

10010

C++心决之命名空间、重载函数和引用

注意:早期标准库将所有功能在全局域中实现,声明 .h 后缀头文件,使用时只需包含对应 头文件即可,后来将其实现在 std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,...数类型信息添加到修改名字。...如果两个函数函数名和参数是一样返回值不同是构成重载,因为调用时编译器没办 法区分。 6....6.5 传值、传引用效率比较 以值作为参数或者返回值类型,传参和返回期间,函数不会直接传递实参或者将变量本身直 接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型...传值和指针作为传参以及返回值类型上效率相差很大 6.6 引用和指针区别 语法概念上 引用就是一个别名,没有独立空间,和其引用实体共用同一块空间。

9210

《Effective C++》读书笔记(4):设计与声明

例如对于以int类型年、月、日作为参数接口来说,用户很可能搞混顺序(不同国家年月日常用顺序不一),那么可以建立年类、月类、日类作为参数类型。 2、限制类型上操作。...例如条款13提过一个工厂方法: Widget* create_Widget() { ... } 如果只是返回一个裸指针,那么删除指针释放资源责任就落在用户身上,而这常常会带来问题;如果把返回值改为shared_ptr...定义一个新type前考虑以下问题: 新type对象应该如何被创建和销毁? 对象初始化和对象赋值该有什么样差别?...这意味着函数参数都是由实参拷贝构造而来,调用端获得也是函数返回值拷贝构造而来(不过有各种优化方式),多次拷贝成本非常大。 C++引用通常以指针来实现,传引用成本相当低。...当要返回对象是一个局部栈对象时,函数退出后该对象就被销毁,无法通过指针或引用访问。因此函数返回值不能是指针或引用,必须是值传递。

15830

c++】内联-引用-重载

c++】内联函数 1.1 背景 我们使用宏时候,需要特别注意,因为宏是直接替换,由于运算符优先级不同,很容易导致计算失误,c++,我们很少使用宏,更多使用内联函数 1.2 内联函数概念...通过上述代码比较,发现传值和指针作为传参以及返回值类型上效率相差很大 2.6 引用和指针区别 语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间 底层实现上实际是有空间...实际项目通常是由多个头文件和多个源文件构成,通过C语言阶段学习编译链接,我们可以知道,【当前a.cpp调用了b.cpp定义Add函数时】,编译后链接前,a.o目标文件没有Add函数地址,...采用C语言编译器编译后结果 结论:linux下,采用gcc编译完成后,函数名字修饰没有发生改变 采用C++编译器编译后结果 结论:linux下,采用g++编译完成后,函数名字修饰发生改变,编译器将函数参数类型信息添加到修改名字...如果两个函数函数名和参数是一样返回值不同是构成重载,因为调用时编译器没办法区分 【扩展学习】 C/C++函数调用约定和名字修饰规则--vs下函数名修饰规则讲解 C/C++ 函数调用约定___declspec

6710

C语言函数指针基础

本文写非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针语法和基础。如果你讨厌事无巨细,请尽情阅读吧。 函数指针虽然语法上让人有些迷惑,但不失为一种有趣强大工具。...本文将从C语言函数指针基础开始介绍,再结合一些简单用法和关于函数名称和地址趣闻。最后,本文给出一种简单方式来看待函数指针,让你对其用法有一个更清晰理解。...将上述要点结合起来,void (*syaHelloPtr)()意义就非常清楚了,这是一个函数指针,它指向一个接收参数且没有返回值函数。...括号操作符用于C语言中函数调用,如果有参数参与,就将其放入括号。这对于函数指针也是相似的,即代码(*sayHelloPtr)()。 这个函数没有返回值,也就没有必要将它赋值给任何变量。...接下来,我们再对函数稍加修改。你会看到函数指针奇怪语法,以及用调用普通函数方法来调用赋值后函数指针现象。

1.5K100
领券