对象指针做函数参数

这篇博客探讨了C++中面向对象编程的概念,通过一个实例展示了如何定义一个类`a`,包括构造函数、getter和setter方法。文章重点讲解了函数参数传递时的指针使用,以及在`sql`函数中如何修改对象的状态并输出结果。在`main`函数中,创建了一个`a1`对象,并调用`sql`函数进行操作,最后打印出修改后的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要注意:
定义函数中的参数列表是类名 指针变量名,形参是指针变量名;
调用函数中的实参是&对象名;

#include<iostream>
using namespace std;
class a{
	public:
		a(int a)
		{
			n=a;
		}
		int get ()
		{
			return n;
		}
		void set(int a)
		{
			n=a;
		}
	private:
		int n;
};
void sql(a *ob)
		{
			ob->set(ob->get()*ob->get());
			cout<<ob->get()<<endl;
		};
int main()
{
	a a1(2);
	sql(&a1);
	cout<<a1.get()<<endl;
	return 0;
}
当指针作为函数参数传递时,主要是为了实现对变量的引用访问或者修改,或者是处理动态内存分配的数据结构。以下是几种常见的场景: 1. **传入单个值类型的地址**:如果希望函数内部能够修改外部的一个基本数据类型(如`int`, `char`等),可以将该变量的地址作为指针参数传递给函数。 ```c++ void modifyValue(int *ptr) { if (ptr != nullptr) (*ptr)++; } ``` 2. **数组名作参数**:在C/C++中,数组名称本质上是一个指向其首元素的常量指针,在声明接受数组的形式参数时通常直接使用指针表示法。 ```c++ void printArray(int arr[], int size); // 等价于 void printArray(int* arr, int size); ``` 3. **返回指针**:有时我们需要从函数获取一个新创建的对象或是找到某个特定位置的结果,则可以让函数返回一个指针。 4. **双重指针用于改变原指针所指向的位置**:当你想要通过函数改变原有指针本身的值而不是它所指向内容的时候需要用到双层间接寻址即二级指针。 ```cpp void changePointerLocation(char** ptrToPtr){ static char newString[] = "New String"; *ptrToPtr=newString; } // 调用示例 char* myStr="Old Value"; changePointerLocation(&myStr); cout << myStr; // 输出 "New String" ``` 5. **智能指针**:现代C++推荐使用标准库提供的smart pointers (`std::unique_ptr`, `std::shared_ptr`) 来管理资源生命周期并防止内存泄漏等问题;对于这些类型的操作同样可以在函数间传递它们而无需担心裸指针带来的风险。 以上就是关于“如何编写以指针为参数的函数”的一些常见模式,请选择最适合您应用场景的方式来设计您的代码吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值